Support recursive pointer types.

Recursive pointer types are checked for in ToLLVM,
and represented as a pointer to a pointer to a unique
struct type. The "pointer to a unique struct type" is
checked for in CreateStore/CreateLoad, and converted
to the outer pointer type.

There's also a check in the & unary operator, which,
rather than returning value.pointer, will create a
new value instead. Not entirely sure that's the
appropriate location, may move it to createPointee
later.

Fixes #19