Implementing better index building and updating codec interfaces.

Previously, we were just mapping a single codec to a collection of puts. However, the codec really
needs to map a put -> target table, so we know how to do the insert (same deal with deletes). Therefore,
the interface neededed a bit of updating.

Also, did most of the implementation of the PhoenixIndexBuilder - its pretty close to the
CoveredColumnIndexBuilder.

TODO:
 - implement LocalTableState
  -- this is probably mostly what CoveredColumnIndexCodec actually manages under the covers.
  -- it will also want to get the underlying row lazily so we can avoid work for cases taht
don't even need to look at the underlying table. Therefore, we will need to do a bit of
refactoring around the BaseCoveredColumnIndexer as that currently manages the localTable.