Add factories and builders all over the places

It was difficult to test ToopherAPI because ToopherAPI#authenticate
instantiated AuthenticationStatus objects. It's now possible to provide
an AuthenticationStatusFactory to ToopherAPI.

To facilitate optional arguments to ToopherAPI, there's now a ToopherAPI
builder that all of the existing constructors dump their arguments into,
and a ToopherAPI constructor which takes a ToopherAPI.Builder.

There's a mock factory and an example test (that should be renamed or
removed) that demonstrates the use of these new classes.