Allowing explicit traceIds

This will allow clients to manage traceIds themselves. Anyone who doesn't want to manage them, can just use the library as before.

```
traceId = agg.recordAction(...);
agg.beginLoad({traceId: traceId, ...});
// etc
```

Another minor change is `beginDataRequest`, `endDataRequest` and `recordError` can now work with an options param. They still work as before with distinct params too.