Reorganized code.  Added tests and fixes for lookups and DateArrayField
Only cast lookups when necessary
Refactor, rename Extra to Cast