Refactor factorizer.

This pull request is a rewrite of the `Factorizer` to improve performance. The biggest change is that a single writer transaction is used for everything now.

```
# Original Performance: 1.45ms per Factorize()
BenchmarkFactorizer	    2000	   1450791 ns/op  [689 ops/sec]

# Single Writer Performance: 36µs per Factorize()
BenchmarkFactorizer	   50000	     36662 ns/op [27,276 ops/sec]
```

There's also another optimization we can do to group commits together but I figured we'd try this refactor first. Here's the performance for the grouped commits:

```
# Coalesced Writer Performance: 9.7µs per Factorize()
BenchmarkFactorizer	  200000	      9797 ns/op [102,072 ops/sec]
```

/cc: @boourns @snormore @orenmazor