Fix this test so it actually runs
InvoiceHeader now supports SalesTermId
Online::ServiceBase: push parse_collection into its own method

This is for parity with Windows::ServiceBase.
Online::ServiceBase: Fix #do_http_post and #do_http_get to add query string correctly
Online::ServiceBase: Add #fetch_object
Add SalesTerm service/model under Online

Honestly this is only to retrieve the sales term name using a sales term id of
an invoice. We don't need this for Windows as Invoice already has a
sales_term_name there.
Fix these broken tests
Fix Customer#fetch_by_id under Online so it handles 'not found' errors
Filter now handles a 'filter set'

Some filters do not simply accept a scalar value, they actually contain sets of
values. For instance, one of the filters under Windows/Invoice is ContactIdSet.
The XML for this looks like this:

  <ContactIdSet>
    <Id>100</Id>
    <Id>200</Id>
    <Id>300</Id>
  </ContactIdSet>

whereas another filter might look like this:

  <StartPage>3</StartPage>

So, we need a way to generate this kind of data.
Fix Filter #to_xml so it handles :number types like #to_s