Support tool slugs as route params

:fork_and_knife: A slug will now be generated from the tool name, which can be changed by the user. The tool slug is used as the tools route param.

![slug](https://cloud.githubusercontent.com/assets/316507/3754148/76346066-1818-11e4-9f43-29b22b5d4f14.gif)

Alright I added a `before_validation` callback that always downcases the slug. I think it should be expected behavior that if someone attempts to use all uppercase characters for their slug that it automatically gets downcased. I don't think this needs to be explicitly represented in the UI other than if someone enters all uppercase letters and the slug is a duplicate that it says the slug is already taken.