Check if Proc has a block before using it.

The arity check for lambda mode uses the block... the check for whether there
is a block should come first.
Use CompiledCode's name in Proc argument errors.
Use CompiledCode's name in BlockEnvironment argument errors.
Merge pull request #2169 from tsion/proc-argument-error

Use CompiledCode name in Proc/BlockEnvironment ArgumentErrors
Require date when time is required
Merge pull request #2171 from brainopia/require_date_from_time

Require date when time is required
Don't inline calls for not often called methods

This changes the JIT so we don't inline methods that aren't often
called, allowing for more room in JIT'ted code for methods that are
often called.

It also changes to keep track of compiling explicitly instead of
(ab)using the call_count for that. Resetting the call count had other
effects such as disabling that method for future jitting that has
adverse effects.

On my system this shaves off around 1 - 2 seconds of a CI run.
Specs for Hash when key has private hash method
Fix failing specs for keys with private hash method
Merge pull request #2170 from brainopia/support_private_hash

Add and fix specs for Hash keys with private hash method
Add an explanation
Spec Kernel#lambda passing a Proc with &
Don't change a given proc to lambda when shouldn't
Remove a passing tag
Allocate dirty float directly in jit helper
Use immediate class as specialization type

We also use the direct class for inline caches, so we want to use this
consistently. This also makes it easier to improve check_serial so the
JIT can create a better version of that. Another advantage is that this
makes it easier to create direct jumps to specialized functions in the
JIT.
Merge pull request #2173 from ryoqun/lambda-method

Don't change a given proc to lambda when shouldn't
Fix typos in proc specs
Merge pull request #2174 from brainopia/patch-1

Fix typos in proc specs
Show literals for push_ivar in bytecode printer