Removed use of splat arguments for options in favour of using a hash.

Includes a workaround for ree and 1.8.7 since they don't support default values for block arguments.