WIP: CIFTI2 spec reader and writer

- [x] CIFTI2 reader
- [x] CIFTI2 writer
- [x] tests
- [x] integration with nifti2
Good question.

I suggest making 'is_cifti' a property of the nifti2 image, where the property method goes and does the check.  Then rename 'to_cifti' 'as_cifti' (just because that's the default naming we've used for converting between types).   But - don't automatically call 'as_cifti' from 'from_file_map' or nifti2.load - only call it automatically from the top-level nibabel.loadsave.load function.  It's the same logic as for the analyze file types.  If you call analyze.load, and you pass it what is in fact a nifti file, it breaks saying it's not an analyze file.   If you call the top-level load, it checks what kind of file you have and loads that.    The idea is that all of the 'check type of file' stuff goes in that top-level factory function, and the module level things always return the designated file type, or raise an error.

So, in direct answer, yes your snippet should return a Nifti2Image ...