Add support for fallbacks and overwriting of variables

Supporting fallbacks is a little more involved because it needs to parse parts of the value character-by-character.

Let me know if there are some things I should be doing differently.