Extract context class

Thanks @buren for the guideline on this commit, inspired by https://github.com/buren/bh/commit/7ee0098b02c289d14cb8e6ce031a2cd8daa933c1

The difference is that I want to be strict about which contexts can be passed to each helper, respecting Bootstrap's documentation, so we can fall back to a reasonable default in case the context is missing or invalid.

For instance, if you don't pass a context to `alert` or you pass an invalid one, it will default to a reasonable `info` rather than `default`, which does not exist for alerts (see http://getbootstrap.com/components/#alerts-examples)