Fixing RubyBasicObject#compareTo bug.

All IRubyObjects implement Comparable and the default compareTo implementation
delegates to <=>. When the ruby object doesn't implement <=>, ruby raises a
NoMethodError. Because compareTo is called from java but the exception raised
is in ruby, the exception makes no sense: it has the ruby stack when ruby
called into java. For example, this happened on an Iterator that kept min and
max references. This iterator was implemented in java, but called by ruby so
the exception's stack ended with the call to next in java::lang::Iterator#each,
but was a NoMethodError for <=>.

This fix catches the NoMethodError and throws an IllegalArgumentException
wrapping it. This isn't a great solution because java callers expect compareTo
to succeed when objects implement Comparable. There may be a better java
exception to throw. This also updates the javadoc to avoid confusion.

In older versions, specifically 1.6.7, the op_cmp java method is called and
returns nil. Then nil is assumed to be an Integer and coerced, which produces a
TypeError. To be safe, this fix also checks the return value for nil when <=>
succeeds and throws another IllegalArgumentException.
Fix gh-601 ant DSL should support parameter hash with symbol keys
Implement FFI::AbstractMemory#slice to fix #608
Add FFI::Pointer.size to fix #607
Propagate typeSize from wrapped pointer
Implement 3-arg variants of Pointer#write_array_of_type() and Pointer#read_array_of_type().  Fixes ffi/ffi#258
Yield specifically nothing in #times when block has no args.
Improvement to no-arg #times, to avoid arg processing if unneeded.
Avoid allocating boolean[] escaped if block is not captured.
Move Ruby 1.9 languages/core tests up in sequence.
Avoid 1.9 block args processing if no args and no arity check.
Alternative way of tracking block escaping through clones.

The previous method would fail to keep a cloned block associated
with its original block consistently, since the boolean[] created
during cloning would not continue to be shared between the parent
and child (cloned) scopes. This led to errors when non-local flow
control like 'break' checked wither the block was escaped or not.

This commit changes the tracking of escape to be via an
intermediate "escapeBlock", which defaults to "this" but which can
point at an original parent scope when blocks are cloned, ensuring
that escape propagates to all clones without any additional
allocation overhead.

This fixes Travis build from the original escaping change.
Defer cloning Binding constructs until actually needed.
Move RuntimeHelpers to org.jruby.runtime.Helpers.
Return memoized nullPointer from Pointer.getNull() instead of looking up Pointer::NULL each time.
Fix issue #612 - restrict struct parameters to those of the appropriate type.
Added optional length to caller() method and support for Range argument
Minor whitespace fixes
Fixed off-by-one error and handled malformed arguments
Tweaks to improved 2.0 caller/backtrace logic.

* Reuse level/length logic across methods
* Reuse gathering logic across methods
* Handle special cases (length = 0, size < 0) properly
* Other tweaks to get 2.0 test_backtrace 100%
* Style fixes