Small improvements for LLVM

Two calls could be marked as read only and not throwing and also clean
up primitive code a little bit.
Cleanup VM and reordering arguments

Use young object determination by the available object flag, just like
we do in other places. Also reorder some properties of VM so it can be
better packed into memory.
Rename state to llvm_state
Rename vm_ to state_

In the past, we didn't have the State object, but only VM. This name
change wasn't made in the LLVM parts, which means that even though in
the JIT we used a vm_ object, it was actually the C++ State object in
the vm.

This was still confusing sometimes, so changed the naming to be
consistent with other parts of the vm.
Reorder some parts of Managed and use Spinlock

Makes ManagedThread smaller in memory by reordering some properties and
switching to a spin lock. Roots only need to be locked for a short time
and hardly ever contented. Also spinlocks use less memory.
Spec for encoding of literal Regexp source.
Added --release, --release-date to configure.
Use release and release date for binary packages.
More binary build fixes.
Add encoding specs for String#gsub
Encoding fix for String#gsub

Evaluates now, which encoding should be used while merging strings.
Throws an error, if no compatible encoding could be found.
Add encoding specs for String#gsub!
Encoding fix for String#gsub!

Evaluates now, which encoding should be used while merging strings.
Throws an error, if no compatible encoding could be found.
Use num_bytes setting instead because it resets char size
Add support in the jit for instance variables in VM objects

Before this was following the slow path, even though we can staticly
compute the offsets and write these values directly. This change adds
support for that, so it makes for example setting @shared in a String
much faster.
Replace usage of new_struct with new_object

The only difference between these two is that new_struct allowed for an
optional size. This optional argument was never used, so it was
equivalent to new_object. Therefore we can clean this up.
Allow allocating dirty objects

In various places we don't have to clear the entire object, for example
because it will be cleared for bytearray's with zeroes anyway, or when
an object copy is immediately created. This allows for allocation
methods that give back these dirty objects to prevent having to set data
twice.
Improve test descriptions
Remove not necessary comparisons
Merge pull request #2106 from Stormwind/gsub-fix

Fix for encoding problems with String#gsub and String#gsub!