Type persuasion for primitive types

These changes allow primitive types to be requested as different types than what is stored in the file format.  Types are cast to the requested type where possible and will suffer precision loss for casting where necessary (e.g. requesting a double as an int).

No performance penalty is imposed for using the type defined in the file type.

A 6x6 test case is provided to test conversion between the primitive types.
could you add docs on what this boolean means and when it should be set to true or false?

Also, changing public interfaces will cause a semver bump. Maybe keep the old constructor (make it default to dictSupport==true).