Decode test: extract DSL
remove trailing whitespace
decode simple strings
decode positive integers
decode negative integers
decode positive and negative floats
Decode: accept_* -> consume_*

The "consume" methods now return a tuple of { value, rest }. That is,
they consume as much of the input as possible and return the leftovers
alongside what they have parsed.
decode array
decode null, true, false
add nested array decoding test
decode Objects
add test for decoding UTF-8 string
better errors when decoding bad objects
add test for complex decode
remove unused decode helper methods
decode: better error messages on bad literals
decode: better error messages for bad objects
decode: single definition of consume_value/1
decode: import String.lstrip, .rstrip
decode: consume_value is private