Uri template support

Replacing the dynamic urls via blocks in pr #26.

Some uri template examples:

```ruby
set_url "/users{/username}" # 1.
set_url "/pages{+slug}" # 2.
set_url "/search{?query*}" # 3.
set_url "/index" # 4.

# 1.
Page.new.load(username: 'bob') #=> visit /users/bob
Page.new.load #=> visit /users

#url takes expansions as well:

Page.new.url(username: 'bob') #=> /users/bob

#2.
Page.new.load(slug: '/my/crazy-slug') #=> visit /pages/my/crazy-slug

#3
Page.new.load(query: 'simple') #=> visit /search?query=simple
Page.new.load(query: {color: 'red', text: 'blue'}) #=> visit /search?color=red&text=blue

#4
Page.new.load(query: 'simple') #=> visit /index
Page.new.load(a: 1, b: 2) #=> visit /index
```