Refactor Overcommit framework

Initial refactor commit. Specs are currently broken, but I'm marking
this off as a chunk of work for now, and will start working more
atomically from now on.

Change-Id: I8a120cb660046e3d7b23e302b0054de932df2bec
Reviewed-on: http://gerrit.causes.com/35559
Reviewed-by: Shane da Silva <shane@causes.com>
Tested-by: Shane da Silva <shane@causes.com>