Support for attributes on references using Ruby 2's kwargs

This implements the feature described by #65 by taking advantage of the introspection capabilities found in Ruby.

The following reference semantics are now in place:

- A reference *must* declare a dotted parameter if the presenter method has a required positional parameter.
- A reference *may* declare a dotted parameter if the presenter method has an optional positional parameter.
- A reference *may* declare an attribute if the presenter method has a keyword parameter with that attribute name. The value will always be a string, which can be quoted using single or double quotes.
- Anything else is a compilation error.

There's intentionally no support for passing arbitrary hashes of key/value pairs – Curly is about defining semantics in the presenter and having a clear API that the Curly template can follow. Furthermore, allowing the template to pass arbitrary keys to the presenter method would open us up to memory leaks as the Symbol keys are not garbage collected. We could use String keys, but that sucks.

The syntax will be:

```
{{widget.button width=80px height=20px}}
```

```ruby
def widget(type, width: nil, height: nil); end
```