Add some generic table classes for UI consistency

Usage will be in a later commit.
Move Credits to their own page.
Logging changes.

- Have fppd load saved LogLevel and LogMask settings at startup
- Remove references to old 'verbose' setting
- Add a UI for changing the log level and mask
- Move parsing of --log-level and --log-mask options to helper
  functions in log.c.
- Rework command socket handling of LogLevel and LogMask changes
  to make it easier for UI to change these on the fly without
  having to duplicate code or spawn fpp.

As part of the above:

- Add fppjson.php.  This is like fppxml.php, but returns JSON
  which is much easier to deal with in JavaScript and PHP since
  there are helper functions which convert between JSON and
  native data types.  For now, fppxml.php stays and has not
  been converted, but the groundwork is layed for future additions
  to use JSON and allow future conversion from XML to JSON of
  existing calls.
- Add JavaScript and PHP arrays to track all settings stored in
  /home/pi/media/settings config file.  settings[SETTING_NAME]
  and $settings[SETTING_NAME] in JavaScript and PHP respectively.
  In the future, this will allow us to get rid of a lot of the
  "global $varname" type lines sprinkled through the code in
  favor of one "global $settings" line.  It also means we don't
  have to add new variables each time we add a new setting to
  the config file, the new setting is automatically added to
  the settings arrays.
Make sure the header byte for DMX Open packets is always initialized.
Add (disabled) Pixelnet-Open support.

This extends USBPixelnet.c to support cheap sub-$10 USB to
RS485 adapters to send Pixelnet data as an option to a
Falcon Pixelnet/DMX add-on card or Lynx USB Dongle.

New feature is currently disabled pending changes to the setup UI
for these alternate channel output methods.
Preliminary support for direct-attached WS2801 pixels.

The included code can drive WS2801 pixels directly from
the SPI port on the Raspberry Pi.  Currently this
functionality is disabled until the new Channel Output
setup UI is completed.  There also may need to be some
tuning since SPI-connected lights were not totally in
sync with USB-connected lights on the same Pi.
make sure we clean up fppmm object files
Use HexDump() for debugging channel output data.

Use the more generic HexDump() routine rather than the
duplicate-functionality dump routine in channeloutput.c.
Display the number of bytes being displayed by HexDump()
Add Channel Remap UI.

Allows user to remap blocks of channels to avoid having
to resequence to map around failed or moved hardware.
Fix errant /li tag.
Tweak layout of buttons on channel remap screen.
Create a unified tabbed Channel Output config screen.

Adds support for configuring various USB dongles and
SPI-WS2801 output types.

Multiple USB dongles can now be configured and used
at the same time.

E1.31 and FPD can be disabled with a single checkbox
on their respective tabs so the users can enable/disable
without having to check/uncheck all universes.  This is
an override setting, mainly used for disabling all
interfaces in a single click.

The device list for USB dongles and SPI interfaces is
dynamically generated, so if you run this on a computer
without the SPI devices, you will not be able to add
a SPI-WS2801 output.  If there are no USB dongles
attached, then you will not be able to add any to the
config.
Add Renard support to FPP UI and FPPD code.

(cherry picked from commit 5e55d297586ac59d9476e061017d5829d212b40b)

This commit also converts the Renard code to use the new Channel Output
configuration method rather than usbdongle.php which will be removed
shortly.

Code is currently untested as I have no Renard equipment.

Conflicts:
	src/channeloutput/channeloutput.c
	www/usbdongle.php
Merge branch 'cpinkham' into stage