conform with RFC 3986

This pull requests makes sure that `slug` only outputs correct url's that conforms to RFC 3986. This is an agreed upon standard of what characters are allowed in an url, and I think that this is something that we should adhere to.

To quote section 2.3 of RFC 3986:

> Characters that are allowed in a URI but do not have a reserved purpose are called unreserved. These include uppercase and lowercase letters, decimal digits, hyphen, period, underscore, and tilde.