Adding style options

Adding ability to add custom styles and a few shortcuts for common styles.

* `writer.write` now accepts a `style` argument of type `xlwt.XFStyle`. This will be used for that write.
* The XL backend accepts a `default_style` argument in the init (also of `XFStyle`). This style will be used as the default for any writes with that backend.

* `writer.write` accepts some additional shorthand options for styles:
  - `bold`: A boolean to add bold
  - `bottom_border`: A boolean that adds a bottom border
  - `format_string`: A string for formatting data. See more about this [here](https://github.com/python-excel/xlwt/blob/master/xlwt/examples/num_formats.py).

* Add a style cache. To avoid creating too many additional styles per sheet (which creates [issues](http://poi.apache.org/faq.html)), I've added a style cache. Anytime a style is used that is the same as a previously used style, we will just use the original one. Doing this required creating the ugly `hash_style` function that normalizes different style objects.