Make url passed into Manager explicit.
Some (possibly) helpful URL generation.

Xero allows deep-linking to various urls within the application
using the ShortCode. This builds a couple of those.

This is just an idea: I'm not sure if it belongs or not. :)
Ensure we POST the xml data to the server.

I think I must be missing something: I'm really not sure how
this was supposed to work, but it wasn't sending XML data at all.
Allow page=N to be added to queries.

The Payroll API uses pagination: this allows passing a page=N
argument to filter to select a specific page.

I toyed with the idea of making .all() fetch all pages, but that
could be bad.
Use a single isinstance() check.
Add some extra DATE_FIELDS and MULTI_LINES
Allow for selectively not sending specific fields.

The Xero Payroll API seems to choke when you pass back an updated_at
type field. We probably will never need to send that back. (Really, I
think that should be up to the API to ignore, but hey).
Allow querying on GUID fields.

Xero calls these GUID, but we can use UUID(value).

This commit enables querying on these fields: we can also automatically
turn fields ending in 'ID' into UUIDs. But I'm not sure if that is
appropriate or not.
Change the process for converting data from XML to python.

Okay, this is the big one.

Firstly, I skip fields that are empty XML tags.

I've added a new field type (DECIMAL_FIELDS), although it looks like
I've commented that bit out :)

The big difference though is that I do stuff in a bit of a different
order.

Firstly, I look at ones that are a 'value' type thing, and convert those
to the primitive they should be. Otherwise, we recursively call the
method to convert all children.

Then, and this is the biggest difference, I think, we ignore the number
of elements, and only check to see if it is a collection.

This check occurs later (in the other branch of the if statement),
so that _anything_ that is in MULTI_LINES is always a list in the end.
Change the process for generating XML.

Because with some MULTI_LINES objects we might actually end up
with a list of primitives, we need to handle that slightly differently.

If we don't have a dict in our dict_to_xml, we simply set the text of
the root element to the value we got passed in.

When we are pushing data back to the server, we turn the data into a
list, and then run the process. I'm not convinced about this, but it
is working so far :(