Strict datatypes and normal-form convertion

Added instances of NFData for pretty much all data types. This allows for deepseq to force evaluation to normal form instead of just weak-head normal form as allowed by seq.
Most data types already had strict arguments, I set them where they were still missing.