better errors
add new lexer-based udp line parser, also tests and benchmarks
switch to new ParseLine implementation

* it works more than twice as fast
* it allocates less memory, presumably

do note, it does not handle leading or trailing whitespace in metric
keys (except \n in packets).  which should be ok because the official
etsy/statsd readme doesn't allow for this anyway.

~/w/e/s/udp ❯❯❯ go test -bench=Line$ -run=XXX -cpuprofile cpu-prof1
PASS
BenchmarkParseLine   1000000          1884 ns/op
ok      _/home/dieter/workspaces/eclipse/statsdaemon/udp    2.889s

(pprof) top20
Total: 290 samples
      50  17.2%  17.2%      262  90.3% _/home/dieter/workspaces/eclipse/statsdaemon/udp.ParseLine
      39  13.4%  30.7%       99  34.1% runtime.mallocgc
      22   7.6%  38.3%       91  31.4% bytes.genSplit
      21   7.2%  45.5%       23   7.9% runtime.MSpan_Sweep
      15   5.2%  50.7%       69  23.8% runtime.makeslice
      15   5.2%  55.9%       15   5.2% settype
      13   4.5%  60.3%       13   4.5% scanblock
       9   3.1%  63.4%        9   3.1% strconv.readFloat
       7   2.4%  65.9%        7   2.4% runtime.markspan
       7   2.4%  68.3%       37  12.8% runtime.slicebytetostring
       6   2.1%  70.3%       25   8.6% gostringsize
       6   2.1%  72.4%        6   2.1% runtime.memclr
       6   2.1%  74.5%        6   2.1% runtime.roundupsize
       5   1.7%  76.2%        5   1.7% runtime.indexbytebody
       5   1.7%  77.9%        5   1.7% runtime.memmove
       5   1.7%  79.7%       26   9.0% runtime.stringtoslicebyte
       5   1.7%  81.4%        5   1.7% strconv.atof64exact
       4   1.4%  82.8%       54  18.6% cnew
       3   1.0%  83.8%       94  32.4% bytes.SplitN
       3   1.0%  84.8%        3   1.0% bytes.lastIndexFunc

~/w/e/s/udp ❯❯❯ go test -bench=Line2 -run=XXX -cpuprofile cpu-prof                                                                                                          ⏎
PASS
BenchmarkParseLine2  2000000           794 ns/op
ok      _/home/dieter/workspaces/eclipse/statsdaemon/udp    2.399s

(pprof) top20
Total: 250 samples
      29  11.6%  11.6%       29  11.6% strconv.readFloat
      28  11.2%  22.8%       66  26.4% runtime.mallocgc
      21   8.4%  31.2%       21   8.4% scanblock
      17   6.8%  38.0%       17   6.8% _/home/dieter/workspaces/eclipse/statsdaemon/udp.lexValueSep
      15   6.0%  44.0%       15   6.0% runtime.MSpan_Sweep
      11   4.4%  48.4%       67  26.8% _/home/dieter/workspaces/eclipse/statsdaemon/udp.lexValue
      10   4.0%  52.4%       10   4.0% strconv.atof64exact
       9   3.6%  56.0%      170  68.0% _/home/dieter/workspaces/eclipse/statsdaemon/udp.(*lexer).run
       9   3.6%  59.6%        9   3.6% runtime.memmove
       8   3.2%  62.8%        8   3.2% _/home/dieter/workspaces/eclipse/statsdaemon/udp.lexKeySep
       8   3.2%  66.0%       48  19.2% runtime.slicebytetostring
       8   3.2%  69.2%        9   3.6% settype
       7   2.8%  72.0%        7   2.8% runtime.markspan
       6   2.4%  74.4%       34  13.6% gostringsize
       6   2.4%  76.8%        6   2.4% runtime.usleep
       6   2.4%  79.2%       19   7.6% strconv.atof32
       6   2.4%  81.6%        6   2.4% strconv.atof32exact
       5   2.0%  83.6%       37  14.8% _/home/dieter/workspaces/eclipse/statsdaemon/udp.lexSampleRate
       4   1.6%  85.2%      214  85.6% _/home/dieter/workspaces/eclipse/statsdaemon/udp.ParseLine2
       4   1.6%  86.8%       23   9.2% _/home/dieter/workspaces/eclipse/statsdaemon/udp.lexKey

interestingly, both implementations have the same top20 memory allocation

(pprof) top20
Total: 0.5 MB
     0.5 100.0% 100.0%      0.5 100.0% allocg
     0.0   0.0% 100.0%      0.5 100.0% _rt0_go
     0.0   0.0% 100.0%      0.5 100.0% mcommoninit
     0.0   0.0% 100.0%      0.5 100.0% runtime.malg
     0.0   0.0% 100.0%      0.5 100.0% runtime.mpreinit
     0.0   0.0% 100.0%      0.5 100.0% runtime.schedinit
disable whitespace tests, we don't support trailing/leading whitespace
more clarity. read errors api vs smth else?

because:
      1 2014/02/24 14:53:15 statsdaemon instance 'foo' starting
      1 2014/02/24 14:53:15 listening on :8125
      1 Listening on :8126
4292994 Error reading: use of closed network connection
      1 read eof. closing
gofmt
invalid lines tests use new parseline2
ability to use multiple processes