#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 
Mark, as per you previous comment about throwing errors vs returning `Option`, in this case this is a user-supplied input and so perhaps should this return `Option[Dictionary]`?