Write Julia types as HDF5 compound types

Fixes #27
Split out write_vals into separate function
Add truncate_module_path as a replacement for the rootmodule kw arg

Also convert full_typename to use IOBuffer, to avoid some allocations
Fix DataFrames test

DataArrays should probably not be trying to perform a conversion if
the type is the same, but we can trivially avoid calling convert in the
first place.
Reinstate support for JLD < 0.1
Drop support for julia < 0.3
Only keep track of references across "write sessions"
Speed up writing strings a bit

Avoid boxing due to pointer instability. This branch is now beating
Base.serialize by >2x on the test case from
JuliaStats/DataFrames.jl#667
Fix some type instability in read_array
Some small performance improvements saving arrays of arrays

We will almost certainly need a different strategy here if we want to
perform within 1 OOM of serialize
Speed up reading types

Use H5Oget_info to get type address instead of getting type name (which
apparently requires a search through all objects in the file). Also use
global buffers in some places instead of allocating on every call.
Verify that the type in a JLD file matches the loaded type
Separate gen_h5convert from h5datatype/h5type

When we read from a file, we don't want to have to define h5convert!
for the type we're reading, since we won't use it, but it's possible
that we will read a type from a file and then write that type. In that
case, an entry would exist in the jlh5type dict for the type, but we
can't know to define h5convert!. So instead, we define h5convert! on
write.
Update a few comments
Reconstruct missing types

I decided to do this rather than read the data as a Dict because 1) it
is a bit easier and 2) reading the data as a Dict could be extremely
slow if there is a lot of data to be read.
Some small perf tweaks
Perf tweaks for d_create/g_create
Add Coveralls
Improve test coverage; fix a small bug with empty types
Reorganization to make the code easier to read and extend