Added helpers to facilitate use with cascalog

Most of this is to help with creating cascalog taps or to create defmapfn to deconstruct properties.

In core there are three new functions, field-keys enables a generic defmapfn for properties which are structures.

The other two are common patterns that I seem to do a lot. I think they are generic enough and the design pattern for schemas in this shape is really common. I'm not attached to the names. If you don't like the idea of them thats ok too.

Types has mostly functions to support field-keys, and also property-paths which will enable creation of taps from a
data type. A function similar to create-partition could return a map of potential tap names and their paths.

This is mostly to make it easier to set up taps and defmapfn's for partitioned data. 

The tests are all there. Although the test for property-paths in type_test.clj is a bit wonky. I couldn't get it to work
the way I thought it should. I commented that one, and got another one working by pulling apart the result into separate tests.  It's not ideal. But it does test the function.