Refactor to make slightly more idiomatic

I used the more commons way by adding an implicit rich object in the
package object, to decorate UUID and Array[Byte] with `toXXX`
converters, so it's a bit more explicit.

I rewrote some code that used var to use a foldLeft.

I applied some scala naming conventions (START_EPOCH -> StartEpoch).

There were a bunch of singleton implementations that can be replaced by
just using a scala object, so removed some code. If we need interfaces
for testing those objects can just extend a trait of the same name.

I cleaned up .gitignore -- really it should only ignore what the command
line tools generate. IDE-specific ignores should live in
~/.gitignore_global

I remove the sbt-idea plugin, that should live in:
~/.sbt/0.13/plugins/build.sbt

Higher level: does it make sense to reimplement what is in
https://github.com/Netflix/astyanax/blob/master/astyanax-core? Maybe we
should just write a thin scala wrapper around that rather than provide a
new implementation.