Do not put Axlsx::DefinedName#name in serialized_attributes (fixes #285)

When using serialized_attributes both attribute's name and value are camelcased, in
`Axlsx::DefinedName` the values starts with `_xmln` which is then
transformed in `Xmln`.

The fix proposed on #285 does not work because then other `Axlsx::DefinedName`
attributes name are no more camelcased (`localSheetId` become
`local_sheet_id` for instance).

As proposed by @randym in #285, this commit only make a special case of
the name and let the other attributes go through serialized_attributes.

Adding a test on it revealed a wrong test which would have catched
similar error but was not because of value returned by `doc.xpath`.
Add missing change from 4400e233c (refs #285)
Fix wrong value for auto_filter defined name (refs #285)
Add auto_filter defined name in `Axlsx::Worksheet#to_xml_string` (refs #285)

The way ot was done previously (adding the defined name on
`Axlsx::Worksheet#auto_filter=`) meant that it was added only when
using this method. But it's possible to assign range on the auto-created
`AutoFilter` with:

```ruby
workheet.auto_filter.range = "A1:B2"
```

In this case the defined name was never added to the workbook.
Ensure auto_filter defined name is correctly added to workbook (refs #285)
Huge refactoring

Do not create huge strings
Let SimpleTypedList inherit from Array
Let Row inherit from SimpleTypedList
Optimized sanitizing
Optimized validation
And more..