Implement NotUndef[string] and Optional[string] expressions.
Implement NotUndef[string] and Optional[string] expressions.

This implements `NotUndef[string]` and `Optional[string]` expressions to be
semantically equivalent to `NotUndef[Enum[string]]` and
`Optional[Enum[string]]`, respectively.

Fixes GitHub issue #83.

peterhuene/puppetcpp