Add custom environment variable via ScriptOptions

+ Fix #145
This will mess up whenever semi-colons, equal signs, or escaped quotes are within quotes, even though they would be valid. It will also mess up if the opposite quote (surrounded in `"`, with a `'` inside).

I went down the rabbit hole of regex to make a more complete regular expression (still can't catch escaped quotes).

```
^((\w+)=["']?(\w+)["']?;)*(\w+)=["']?(\w+)["']?;?$
```

The grammar to describe this isn't so bad, as it's a [right regular grammar](http://en.wikipedia.org/wiki/Regular_grammar). Parsing it directly may prove to be full of less warts than writing a regular expression.

```
S → KEY EQUALS QUOTED_VALUE
S → KEY EQUALS QUOTED_VALUE SEMICOLON S
KEY → KEY_SENTINEL | KEY_SENTINEL KEY_SENTINEL
KEY_SENTINEL → _ | a | b | ... | z | A | B | ... | Z | 1 | 2 | ... whatever else
QUOTED_VALUE → " VALUE_DQ " | ' VALUE_SQ ' | VALUE
VALUE → VALUE_SENTINEL | VALUE VALUE
VALUE_SENTINEL → {Whatever you want, so long as you escape quotes}
VALUE_DQ → ' | VALUE_SENTINEL| VALUE_DQ VALUE_DQ
VALUE_SQ → " | VALUE_SENTINEL | VALUE_SQ VALUE_SQ
```

OMG, what am I doing on a Sunday? It's Father's Day!