blockchain: Introduce chaingen test harness.
blockchain: Introduce chaingen test harness.

This introduces a new chaingen test harness in the blockchain test code
that is intended to be used to refactor out some of the common code used
in the tests that make use of chaingen and have a lot of repeated and
cumbersome code as well as to simplify creation of future tests which
require the ability to create fully valid test chains.

It encapsulates a test instance, a chaingen generator instance, and a
block chain instance to provide all of their functionality as well as
several convenience functions such as tested block acceptance and
rejection, expected tip checking, and threshold state checking.

The harness will certainly need to have additional functionality added
as the various tests are updated, however this initial implementation
should cover most of the basic functionality.

Also, it makes judicious use of the new test helper functionality
introduced in Go 1.9 which allows any test failures to report the line
that invoked the helper funcs as opposed to the line inside the func
itself which greatly improves its usability in shared code.

This only includes the new infrastructure code and does not update any
of the tests.  That will be done in separate commits.

decred/dcrd,decred/dcrd,jrick/dcrd,jrick/dcrd