WIP: Add types to facilitate release of memory via finalizers.

I started to implement the suggestion @stevengj gave in #26. There are new types `KinsolHandle`, `CVodeHandle`, `IdaHandle` and `NVector` with finalizers. I hope this doesn't break any existing code which doesn't use the simplified interface? IDAS and CVodes are not covered yet.
My understanding from the Kinsol docs is the `N_VMake_Serial` does not make a copy of the data, but rather it just copies the pointer to the data in `x` (i.e. `NV_OWN_DATA_S` will be false).   Therefore, you need to make sure that `x` is not garbage-collected while the `NVector` still exists, and the easiest way to do this would be to add an extra field `x::Vector{realtype}` to `NVector` that holds a reference to `x`.

It might be nice for this to be `:< DenseVector`, so that you can still access the contents.  Unfortunately, Kinsol uses macros to access the components of a dense vector, but you could just write `size`, `getindex` etc methods using the `x` field added above.

Also, following Julia naming conventions, shouldn't `realtype` be `RealType` or something like that?