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
minor docs fixes
fix resource type 'type' attribute
fix reference
minor fixes suggested by jaredgrubb
validator fixes as suggested by tomprince
remove tuple deconstruction, better factoring of buildset validators
minor fixes to tests
add support for old lastTrigger format to NightlyTriggerable
remove unnecessary inlineCallbacks
make the temporary SourceStamp more obvious
remove unnecessary yield of a returnValue
use copy instead of deepcopy
handle old, no-longer-desired classes in pickles using a find_global function
fix setup.py omissions discovered by jason@rampaginggeek.com
add MQ stuff to README.md
add some general description of the status of the project
fix logging statement
add notes about data API update signatures
fix comment typo