Motivation:
* Run lotus with the race detector enabled (primary motivation).
* Allow multiple lotus nodes in a process (not a high priority).
Previously, the journal was shared between all lotus instances, but it was
initialized for every new node. This caused safety problems in tests (at a
minimum).
This patch explicitly passes the journal to all services that need it.
We're probably going to want to change some of these design decisions down the
road, but this is a good starting point.
* We may want to use a more general test for "is actor valid at epoch". Maybe
just a function?
* I'd like to push some of the actor metadata down into the actor types
themselves. Ideally, we'd be able to register actors with a simple
`Register(validation, manyActors...)` call.
This commit introduces a new package `conformance` containing:
1. the test driver to exercise Lotus against interoperable
test vectors, and
2. the test runner, which integrates go test with the test vector
corpus hosted at https://github.com/filecoin-project/conformance-vectors.
The corpus is mounted via a git submodule.
Right now, only message-class test vectors are supported. In the
next week, this support will be extended to tipset-class, chain-class,
and block sequence-class vectors.