Support unreleased LLVM 3.3 using svn trunk

LLVM 3.3 is still not released. So, note that LLVM's API may change further and
break buidling Rubinius with LLVM 3.3.
Add spec for require after $LOAD_PATH change

When developer add something to $LOAD_PATH and require once again the
same file ruby should not require it once again.

Example:

Rubinius have lib/racc/parser.rb file. And this file will require after
bootstrap.

  require 'racc/parser'

After require 'rubygems' $LOAD_PATH will change and now we have access
to two version on 'racc/parser' (from Rubinius /lib and /gems/racc).
When user try to require once again rubinius will search via $LOAD_PATH
and hit racc/parser from _RUBYGEMS_. In ruby 1.9 mode all paths are
expanded so rubinius will require once again 'racc/parser'. This is
because in $LOADED_FEATURES we can find only
"[rubinius_path]/lib/racc/parser.rb". When CodeLoader will find file in
$LOAD_PATH ([rubygems]/racc/parser.rb) and full path is not part of
$LOADED_FEATURES this file will be load once again.
Add fail tags for require after $LOAD_PATH change
Stop auxiliary threads before stopping the world

This prevents a deadlock where for example the finalizer thread was
halted running Ruby code and had a Thread lock. This caused code after
forking to deadlock. By switching these, we make sure that the finalizer
thread stops at a safe point.
Remove object tracking from inflated headers
Add index to header allocation
Pass state to inflated header retrieval where appropriate
Add STATE parameter to object_id retrieval
Pass down state into header word to inflated header
Remove unused lock_ instance variable
Move to index offset in aux word for inflated headers

This ensures that all object header flag handling always happens inside
the object itself and doesn't depend on the inflated header for that.
This ensures we don't need to deference for accessing these bits.
Change object layout to move type bits to front

This has the advantage that we can do a type check in the JIT that
always works because we don't have to consider inflation now anymore
since that doesn't change the flags layout.
Remove unneccessary null check
Remove unused argument for set_inflated_header
Use an aux word meaning since we use aux word to store inflated header

This changes the setup from a boolean inflated flag, to using an
AuxWordMeaning, since that is now more appropriate since aux word is
also where we store the inflated header index.
Also add the size check for C-API handles
Move C-API handling into ObjectMemory

This is a better place, since ObjectMemory is concerned with memory
management and handle management falls under that. Also makes it
consistent with where InflatedHeaders are managed.
Explicitly cast argument to int
Merge pull request #2242 from ryoqun/support-llvm-3.3

Support unreleased LLVM 3.3 using svn trunk
Make sure to clear InflatedHeader when it's not used