Prefer using force_as over reinterpret_cast
Cleanup Dispatch usage and remove unused versions
Use nil<> template over explicit casting of cNil
Use RBOOL and CBOOL where appropriate

In a lot of places we used ? : or multiple return style to return Ruby
boolean values. We have a helper for that, RBOOL so we might as well use
it. Also switch to using CBOOL where it's appropriate for Ruby to C(++)
boolean checks.
Fix space after if() to match style guide
Move leopard_hashtable to proper name
Set hits to 0 for inline block's JITMethodInfo

This fixes the following valgrind error:

    ==13303== Thread 4:
    ==13303== Conditional jump or move depends on uninitialised value(s)
    ==13303==    at 0x7826ED: rubinius::Inliner::inline_for_class(rubinius::Class*, int) (inline.cpp:159)
    ==13303==    by 0x782312: rubinius::Inliner::consider_mono() (inline.cpp:35)
    ==13303==    by 0x7A9EFE: rubinius::JITVisit::visit_send_stack(unsigned long, unsigned long) (jit_visit.hpp:1481)
    ==13303==    by 0x7A1CD6: rubinius::VisitInstructions<rubinius::JITVisit>::dispatch(int) (jit_visit.hpp:1565)
    ==13303==    by 0x7A1426: rubinius::jit::Walker::call(rubinius::OpcodeIterator&) (jit_builder.cpp:554)
    ==13303==    by 0x7A11B4: void rubinius::jit::ControlFlowWalker::run<rubinius::jit::Walker>(rubinius::jit::Walker&) (control_flow.hpp:49)
    ==13303==    by 0x79FB30: rubinius::jit::Builder::generate_body() (jit_builder.cpp:591)
    ==13303==    by 0x788576: rubinius::Inliner::emit_inline_block(rubinius::JITInlineBlock*, llvm::Value*) (inline.cpp:648)
    ==13303==    by 0x78809A: rubinius::Inliner::inline_block(rubinius::JITInlineBlock*, llvm::Value*) (inline.cpp:284)
    ==13303==    by 0x7AD231: rubinius::JITVisit::visit_yield_stack(unsigned long) (jit_visit.hpp:2709)
    ==13303==    by 0x7A1E55: rubinius::VisitInstructions<rubinius::JITVisit>::dispatch(int) (instruction_visitors.hpp:62)
    ==13303==    by 0x7A1426: rubinius::jit::Walker::call(rubinius::OpcodeIterator&) (jit_builder.cpp:554)
    ==13303==

This valgrind error is introduced by this commit:

a787d839d88e8542d573f966b82f4376a0858ed4
    Don't inline calls for not often called methods
Merge pull request #2235 from ryoqun/valgrind-error-hits

Set hits to 0 for inline block's JITMethodInfo
Use std::set since it never invalidates on insert()

When flushing handles, it can happen that new handles are added to the
set. This mainly happens for cases where we flush an RArray handle,
because that also gets handles for all elements in the array.

std::tr1::unordered_set doesn't give the insert guarantees we need,
namely:

Iterator validity

On most cases, all iterators in the container remain valid after the
insertion. The only exception being when the growth of the container
forces a rehash. In this case, all iterators in the container are
invalidated.

So if a rehash is forced, all iterators are invalid. This means we have
undefined behavior that can result for example in crashes (which was
happening in the Nokogiri test suite for example).

std::set explicitly states it doesn't affect iterator validity, so it
doesn't suffer from this problem. The downside is less performant
insert() but there isn't really another option without redoing this
completely.
Prevent having to search twice when adding handle to slow handle set

This uses the return value of the insert to determine if the value was
already in the set or not, so we only reference it if it was newly
added.
Add specs for writing StringIO with binary strings
Enable encoding specs for 1.9+ versions by default
Make StringIO operations byte based

StringIO works like an IO object and basically operates on strings as
them being byte arrays without encodings. This fixes a bunch of test
failures on Nokogiri as well, which uses a StringIO internally and got
results back with the wrong encoding.

Also fixes #2163 because the wrong encoding came out, because the
encoding aware methods used in StringIO before would change the encoding
if a ASCII-8BIT string was written to the StringIO. With this change,
they retain the original encoding, so things come out in the right
encoding from Nokogiri.
Don't setup GC state around waiting for JIT requests in sync mode

The JIT thread itself managed the GC state of LLVMState, so we shouldn't
interfere with that logic from the compile_soon logic that actually gets
executed by another thread.

Fixes #2226
Don't return before waking up condition

Fixes #2220
Merge git://github.com/wulftone/rubinius
Specs for the new Date._parse/2 method
Moved spec and cleaned up commented-out stuff