Various bottle cleanups.

* Use define_method instead of class_eval.
* Remove legacy url syntax.
* Use revision instead of version.
* Add support for custom bottle URLs.