Performance wins across the board (#211)
* Add some more benchmarks and reset args state between Parse
* Some quick perf wins
* Lazily initialise the env var map
* Eliminate a range loop in favour of utf8.DecodeRuneInString
* Remove an unneeded slice allocation
* Simplify some type assertion stuff
* Reuse the tabwriter to avoid excess allocations