Major Ban menu improvements

Entire banlist is no longer sent to clients.
Ban page is now paginated. The client is sent a "page" when requested,
or when the data needs to be refreshed.
Ban updates are only sent while XGUI is open. Opening XGUI will trigger
a refresh if the data has been invalidated.
Added more sort and filter options. Tables are sorted and cached when
needed, invalidated when ban information changes.
Ban menu shows total bans or number of filtered results.
ULX bans and other bans (or "Source Bans") are no longer separated, but
can be filtered via the "Incomplete" filter option.
"Source Bans" menu and related data stuff have been removed.
Split "Freezeban" checkbox into a separate button to add bans for
consistency.
Added "Custom" event handling of data to XGUI's data system.
Added tooltip option to DButtons in xlib.
Other Bans UI improvements.
Lots of old code cleanup.