D.H.Strict: only evaluate values if used

Before this change all value arguments would be evaluated to WHNF even
if they were never inserted into the map. Fixes #69. Fixes #57.

Also fix a strictness bug in fromList (fixes #61).