No need to set close_on_exec on read pipe
Improve encoding handling in parser for symbols
Marshal encoding for Symbols

This allows for storing and retrieving the encoding from the bytecode.
This is needed for supporting Symbols with encodings.
Add encoding support for Symbol

This is proably the simplest implementation based on what there is now.
In the future we want to rework the SymbolTable, but for now we can at
least support this.

Symbol encodings are used for example in the i18n gem, so there's real
code out there depending on this.
Remove tags for passing specs

Removes the tags for Symbol encoding related specs.
Always force eAscii as encoding for symbols in 1.8
Throw exception in 1.8 mode for empty string

Also simplifies the \0 check for symbols with a \0 contained in it.
Revert "Throw exception in 1.8 mode for empty string"

This reverts commit 325aa84a6be9ecd3602c009597b59a9ded5477c1.
Revert "Always force eAscii as encoding for symbols in 1.8"

This reverts commit 4338798162fbe00accfadcbdceb6c26699ef7e09.
Revert "Remove tags for passing specs"

This reverts commit cc14fb8737aeb454b52e14662cbc8bdffc034776.
Revert "Add encoding support for Symbol"

This reverts commit 239ce0c6c00401b8111342fafa55dab80c13ded5.

There are some weird issues when building with 1.9 / 2.0 that need to be
investigated first.
Use Encoding::from_index instead of manually using list
Cleanup unnecessary code from Symbol
Simplify check for string containing null bytes
Move check for empty string for 1.8 mode
Use String with encoding for unmarshalling
Store encoding index with Encoding object
Store encoding indexes for Symbols
Use encoding of passed string for Symbol

This only uses the encoding if the string is not ascii compatible. In
that case the encoding for the string should be ascii.
Remove tags for passing specs