tp: implement Python style error message stack traces
This CL implements traceback error-messages similar to Python for all
SQL errors. Specifically, every instance of execution of SQL in trace
processor now augments the error message with bread-crumbs adding its
context. This makes it much easier to understand where, how and why
errors happened.
The format of the error message draws heavy inspiration from Python so
as to be instantly understandable by anyone who has seen error
messages from there
For example, suppose you make a syntax error in the shell:
```
> select s from slice
Traceback (most recent call last):
File "stdin" line 1 col 8
select s from slice
^
no such column: s
```
And if there is an error in a stdlib module called by a metric:
```
Traceback (most recent call last):
Metric "android/android_startup.sql" line 18 col 1
SELECT IMPORT('android.startup.startups');
^
Module import "android.startup.startups" line 106 col 5
startup_i,
^
no such column: startup_i
```
Change-Id: Ie181a8aebedc655227a3505e6909d42db7d9cba7
Bug: 282918991
Fixes: 282918991Perfetto is a production-grade open-source stack for performance instrumentation and trace analysis. It offers services and libraries and for recording system-level and app-level traces, native + java heap profiling, a library for analyzing traces using SQL and a web-based UI to visualize and explore multi-GB traces.
See https://perfetto.dev/docs or the /docs/ directory for documentation.