Sourcestamps refactor (WARNING!)

WARNING: this breaks the existing status hierarchy; in particular, BuildStatus.getSourceStamps now returns nothing.  It's all  downhill from here!

SourceStampSets are gone; instead, buildsets have a collection of
sourcestamps (roughly equivalent to the existing sourcestampsets, but
treated as a simple many:many relationship instead); each change has one
sourcestamp, and sourcestamps are uniquely identified.  This
necessitates significant changes to schedulers and the build process.

More importantly, SourceStamps are gone!  The class has moved to the
pickle_prereqs module for use when importing pickles, but is otherwise
gone from Buildbot.  This, too, has required significant changes to the
process classes.  Note that BuildRequests add "fake" SourceStamp objects
so that the status hierarchy can remain relatively un-altered.

All of this begins to break the status hierarchy, which will disappear
by the end of the nine process anyway.  In particular,
BuildStatus.getSourceStamps now always returns an empty set, meaning
most of the web UI no longer shows anything useful.

Also in this commit: (sorry for rolling all this together!)

* a new method of validating data types, allowing more flexible
  specification of nested types.

* generalized column hashing to work around MySQL's lack of support for
  unique indexes.

* remove support for triggering builds from the debug client

* adds a master attribute to the DB connector, requiring changes to
  FakeDBConnector as well

* fix a few identifiers with underscores to use interCaps instead