Made a types package.

The rational is that I want to collect common types to use throughout
all of the data structures. That way you can implement a few simple
interfaces on your data types and get access to a broad range of storage
options. I also want to support a generalized framework iteration so
that your code can abstract away from which option you choose.

Unfortunately, the generics through interface boxing are not free in go
but I think that they provide enough benefit to justify their usage in
these cases. It would be nice if there was support for compile time
parameterization but unfortunately that is unlikely at the present.

Signed-off-by: Tim Henderson <tim.tadh@gmail.com>