#44 Convert Dictionary to Thrift and remove name

This is _not_ finished, but opening up to get some early feedback (if people are bored).

@markhibberd This hasn't changed all that much from my branch, but tried to break everything down just for my own sanity (and possibly yours).

The last commit is really my 'sin bin' of things that aren't quite finished yet. In my head the last big thing that _has_ to be done is more graceful migration of previous dictionaries. I'll most likely stick that in `DictionaryImporter`.

Any suggestions for what locking we _need_ in `IdentifierStorage` for this PR? It might be we're not (that) worried about contention of dictionaries being imported at this stage.

/cc @raronson 
Agreed. Probably more than a little nit pick, it is almost guaranteed to lead to a bug at some point. We need to do a better job of making sure that return types are annotated everywhere. It is easy to let them slip - I know I do sometimes - so we should make that a standard part of review.