Adds multiple sheet support w/o breaking current API or DSL, supporting the DSL on subsequent sheets

Hey man,

I work with Brian Kotek and another developer, both of whom have needed multiple sheet support.  Reading up on your conversation, I was in agreement with you that it should be supported but shouldn't break existing syntax and should also allow additional sheets to be manipulated with the same ease.

All of your tests pass, and I've added two for the new features.

All of the existing methods on the exporter still work, but if you do withSheet( "Some OtherSheet"), you'll get back something (What is it?  That's…slippery.) sharing the same API as the exporter itself.  It basically works by changing your *Ability classes to @Category a new interface, having XlsxExporter implement this interface, and adding an ExcelExportSheet class that's basically a cheap, mixed-in wrapper for an individual sheet.  

Syntax:

```
// First sheet
xlsxReporter.add(sheet1Objects, allPropertiesToBeAdded, 0)
// Work with a second sheet
xlsxReporter.withSheet('sheet2').add( sheet2Objects, allPropertiesToBeAdded, 0)
```
I also switched a bit up to let people change the name of the initial sheet:

If you want something other than "Report" for the first worksheet, set the worksheet name when you create the exporter:

```
namedSheetExporter = new XlsxExporter(worksheetName: otherSheetName)
```

I've also added/tested support for Maps instead of typed objects.