ENH: Added xlsxwriter as an ExcelWriter option.
Added xlsxwriter as an optional writer engine. Issue #4542.

Merged comments from #4739 but created new PR based on @jtratner's refactoring of `excel.py`.

Note, this PR doesn't include test cases due to fact that `test_excel.py` has also been heavily refactored but isn't yet merged (#4844). Once, those cases are merged to master I'll rebase and update this PR. I've added `test_excel.py` tests on a separate branch and they pass local and TravisCI tests.
 @jmcnamara I merged the other branch,
 btw - if you need to change the ordering of how the cells are formatted (e.g., so that it yields cells in a different order or something), you could move the cell formatting to a method on `ExcelWriter` and then overwrite that in `XlsxwriterWriter` (or whatever you are calling it). I recall you saying something about that in regards to performance. (and then just pass additional keyword arguments to `write_cells`, etc.)
 I can't seem to fix this cleanly. I'm going to close the PR, rebase and squash the commits.
 What's the current status of other engines for excel?
 I made an attempt to add pyexcelerate as a writer engine in PR #5128.

That stalled however and was eventually rejected. See the comments at the end of the PR for the reasons.

Apart from that, there aren't currently, to the best of my knowledge, any Excel reader/writers that would be worth adding.
