aft: Realloc of NULL functions as malloc.

C99, 7.22.3.5 specifies that a realloc of NULL acts as malloc. So allow it to
work.

This has been causing aft to falsely fail more recent builds of the
interpreter (I think generic function mapping does this in certain cases.)

I ran aft on sanity.ly again with no issues.
Option is now possible. (first pass at enum class, unstable).

With this commit, it is now possible to define an enum class, which is a
(C-style) union of different class types. The enum class currently does not
allow specifying any functions for it (but that is to come, in time).

The syntax is pretty simple. Assuming that 'SomeType' and 'NoneType' are
defined:
    enum class Option[A] {
        SomeType[A],
        NoneType
    }

Instances can now be created and given values, like so:
    Option[integer] i = SomeType::new(10)
    i = NoneType::new()

Beware, the new code has not been tested much (and defaulting may be broke).
I'll stabilize it over the next few commits.