Revamp buffer creation, allow passing init state.

This also introduces State and StateV which are used by Editor and Buffer to
maintain their state mappings.
Moar revamping of buffer creation!

I bit the bullet and switched to a builder class, because I wanted to add the
ability to augment the tags provided by the major mode. This allows us to, for
example, create a help buffer, but add the "project" tag to it and pass the
project as buffer state, so that all the project minor modes come along for the
ride in this help buffer.