Refactor server and factors into db package.

### Overview

This pull request cleans up the separation between different pieces of the database so they have a cleaner implementation and can be tested easier. The `server` package was getting large and carried the responsibility of data storage and HTTP transport. Data storage has been moved to the `db` package.


### Notable Changes

* `Servlet` has been removed. Most of its functionality has been moved into `db.db` and `db.shard`.
* The `factors` package has been merged into the `db` package.
* `factors.DB` is now `db.factorizer`.
* Interfaces implemented for `db.DB` and `db.Factorizer`. Future tests can mock these pieces out.
* `server.Server` is now primarily concerned with HTTP transport. Some factorization still exists and should be moved over to the `db` package.
* Cleaned up several missing lock issues.

There is more clean up that can be done but I think this goes a long way.

/cc: @boourns @orenmazor @snormore @mkobetic