simplify encoding splitter and support whitespace inside encoded

@bf4 @jeremy @mikel 

also some performance/GC improvements
Clearer and a bit faster to use a case statement:
```ruby
case $1
when 'b', 'B'; b_value_decode string
when 'q', 'Q'; q_value_decode string
end
```
or a decoder mapping:
```
DECODERS = { 'b' => :b_value_decode, 'B' => :b_value_decode, 'q' => :q_value_decode, 'Q' => :q_value_decode }
...
send DECODERS.fetch($1), string
```