~tim/natalie

Add Proc#to_proc

TIL:

    (-> {}).to_proc.lambda?
    # => true

...which was surprising to me. I had considered Proc and Lambda to be
distinct, but lambda is merely a propery of Proc and is maintained.
Cool!
Fix error message when constant not found
Fix streams test on macOS
Refactor how we search for methods

I'd like to get rid of MethodValue::call_method, but it's still being
used a few other places.
Add Proc#arity and fix some issues counting arity
Add Method#arity
Optimize more Integer methods using ValuePtr
Disable broken specs for now
Include Enumerable in Range so it gets map et al
Fix enumerator when returned from map and each
Add -@ (negate) method to Integer
Fix shared it_behaves_like stuff
Add public and private method visibility

We'll do 'protected' another time.
Don't run compiler test with ruby, whoops
Don't rely on bash for this test

sh is fine.
Enable compliler test
Use boardslam for compiler test

There's more code, so more things to break. :^)
Add temporary pp method in compiler

This is an ugly hack, but it helps in debugging.
Refactor compiler_test

...so we can more easily test boardslam or other code.
Make our SexpProcessor do things in the same order

...as ruby_parser's. This was causing some expressions to be processed
in a different order.
Optimize integer math of +/- by not heap-allocating an object

We'll be optimizing more Integer methods soon, but this is a fantastic
start, and cuts run time of a small script in half!

    # nums.rb
    100_000.times do
      x = 100 + 200
      y = 300 - 100
      z = 400
      nil
    end

Before:

    ./nums  0.85s user 0.08s system 122% cpu 0.761 total

After:

    ./nums  0.36s user 0.07s system 113% cpu 0.377 total
Next