Make it easier to subclass Addressable::URI

I've modified `#dup`, `#normalize`, `#join` and `#merge` to return objects of the same class, which is useful when subclassing `Addressable::URI`.

Example:
```
class Custom < Addressable::URI; end
custom = Custom.new
puts Custom.parse(custom).kind_of?(Custom) # => false (true with this patch)
```

All tests pass.