Removed network class and context managers

Instead, we do all the label stuff manually in "network" classes.
This should make it clear that people can use whatever
Python stuff they know to organize their models as they see fit.

Additionally, we now use a single thread-local model
as the default "context." Objects created will be placed into
this model, but that can be overriden by passing in a model
to each object. A newly created model will be considered the
new context by default, but this can be prevented by passing
`set_context=False` to the model constructor.