Lazy dtype update

Fix for #1287, replaces #1290 and #1291.

Demo notebook:
http://nbviewer.ipython.org/gist/ocefpaf/4c81ca2d4a86c69e2026

@rhattersley Not sure if I merged things correctly.  A quick test with my dataset works :grin: though.
Looks like some strangeness here, and while we're making notes, it would be nice to fix the typo: `auxilliary` -> `auxiliary`.