Move nil check into case expression when accessing properties
Extract Rip::Core::Base#finalize_property from Rip::Core::Base#[]
Recursively finalize lambda properties to ensure proper binding

NOTE When a lambda has no receiver and is the receiver of another lambda (e.g. -> {}.to_string), it should not be bound when read as the receiver of its lambda property. Therefore do not recurse when finalizing Rip::Core::DynamicProperty
Only display unapplied parameters when converting lambdas to strings
Execute native lambdas in a more realistic context

This change significantly slows down test. To help mitigate this, memoize
Rip::Compiler::Driver.global_context. Helps a lot, but still
noticeably slower
Call Rip::Nodes::Parameter#type when calling System.Lambda.@.to_string
FIXME Add test for System.Lambda.@.to_string
Improve System.Lambda.@.to_string