Put the strictness in the unsafe decorators.

Instead of having to add strictness to the safe versions, which I'll
now revert.
Revert the strictness additions to 'log' and 'simpleMemoize'.

The reverts I wanted to do here are trivial, but I was curious how to
do partial reverts in general. I got a little carried away ...

The strictness additions were in

  32868a96306a1e52871e9bfc93cd14e589df7943
  d9bb1453d134cf88394eed5056f5f6284a6856c5

The second of those commits includes unrelated changes, but I was able
to do a partial revert with

  git -c diff.noprefix=false log -S'`seq`' --patch | git apply --3way --reverse

which is based on

  http://git.661346.n2.nabble.com/Revert-a-single-commit-in-a-single-file-td6064050.html#a6064406

The '--3way' makes Git create conflicts, instead of failing, when a
hunk does not apply cleanly.

I needed the '-c diff.noprefix=false' because of a bug in Git where
'git apply' expects patches with prefixes (I.e. '-p1' style paths,
e.g. 'a/Makefile' and 'b/Makefile'). A similar bug was fixed in Debian
Git a long time ago:

  https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=607044

Alternative workarounds:

- Use 'git apply -p0 --3way --reverse'. The '-p0' means to strip zero
  leading path components; the default is '-p1'.

- Disable my ~/.gitconfig. I can't find a normal way to do this, but I
  found a good trick:

    HOME=/dev/null git log -S'`seq`' --patch | git apply --3way --reverse
Rename '*Arg*' to '*Args*'.

To emphasize the tuple-ness.
Get rid of 'Get' prefixes.

To avoid conflicts between '(Get)Monad' and 'Monad', I changed
the getter to 'MonadM'. This is consistent with 'ArgsM' and
'RetM', so not too weird.
Replace 'Curried' tyfun with '(->*)'.

This is one of the few times I've ended up with
mnemonically meaningful infix Haskell operator.
Here we have

  (a1 , ... , an) ->* b ~ a1 -> ... -> an -> b

i.e. the '*' means "use zero or more arrows to
fill in the type".
Add kind-sigs to curry-related classes.
Refactor the curry and uncurry laws.

I added new laws for uncurrying after currying, which
can be used to simplify the 'unsafe*' decorators, and
got rid of the 'CurriedUncurried*' synonyms, since
they are only used one place in the laws.
Simplify the unsafe decorators using new curry laws.
Abstract the unsafe decorator transformation into 'unsafePurify'.
Rewrite 'unsafeTrace' using 'unsafePurify'.
Rewrite 'unsafeMemoize' using 'unsafePurify'.