Add support for keyword filter arguments

@boourns & @Soleone for review
cc @tobi

## Usage

In liquid the syntax would be as follows to call the filter with keyword arguments.

```
'input' | filtername: key1: 'value1', key2: 'value2'
```

```ruby
def filtername(input, params={})
  # ...
end
```

Positional arguments are also supported.

```
'input' | filtername: arg1, arg2, key1: 'value1', key2: 'value2'
```

```ruby
def filtername(input, arg1, arg2, params={})
  # ...
end
```