Enhancements and Fixes around `Uri` implementation

1. Some changes to be able to render an URI definition as String (belongs to issue #23).
2. Renamed `NumericParam` to `NumericPathVar`, `IntParam` to `IntVar` and `LongParam` to `LongVar` (belongs to issue #22 ).
3. Updated Scala to version **2.11.1**
4. Regard an optional fragment identifier in a URI definition (belongs to issue #26)
The subtyping is fine, just the way the parser is now written:
```scala
def Authority: Rule1[org.http4s.Uri.Authority] = rule { optional(UserInfo ~ "@") ~ IPv4 ~ IPv6 ~ RName ...
```
__suggests__ we need a ```IPv4 && IPv6 && RName``` where before it __suggested__ we needed a Host, which is a ```IPv4 || IPv6 || RName```
Its really just a matter of style, by keeping the syntax as much like the RFC we can spot errors and be more likely to conform with the spec.
(Also note it looks like I messed up the Port, which should be optional but it looks required)