[fppd] print parsing errors to stderr
[core] Fix manual triming of newline from callback output to make log prettier.
[plugins] Fix crash of forked media callback introduced by not checking mediaDetails for null before calling strlen on them.
[plugins] Make MediaCallback non-blocking as per the original design goals.
[scripts] Cleanup eventScript else block and allow direct execution of files if executible.
[core/plugin] Lots of plugin work relating to issue 77

• Implement the "Next Playlist Entry" plugin callback:
  · User adds "plugin" to a playlist with optional data to be passed to
    the callback
  · User configured data is passed, along with the current entry in the
    playlist (0-based), FPP mode, and whether or not we are repeating.
  · When this entry comes up in playback of a playlist the plugin's
    callback is run.  Expected data given back is equivalent to the CSV
    format we use in our playlist files for other entries.
  · Note that this callback is blocking.  If the plugin takes 5 minutes
    to run, it will be 5 minutes before the socket responds, and
    playback resumes.

• Pass data of whether we're starting or stopping to "playlsit" callback
  so plugins can take appropriate action.

• Fixed two previous callbacks that don't return data, and were
  advertised as non-blocking, but were actually blocking.

• Use eventScript to execute the callbacks.  This should make it such
  that we can easily change to similar functionality as the eventScripts
  (run a hanful of file extensions) as well as controll the environment
  passed to plugins by setting up things in our common scripts.

• Cleanup a few things I saw along the way
  · Update a few calls to strcpy, strcat to use the "n" versions so we
    hopefully don't overstep our memory.
  · null free'd variables
  · Cleanup a couple 'externs' that aren't actually present

• Add a helper that string-ifies the FPP mode
[UI:usb/serial] Add ACM devices and allow more than 10 devices
[renard output] Fix a bug writing too much data.

Fix a bug wherein we were writing out maxChannels worth of data even
though we were only given channelCount worth of data.

Thanks to David Pitts for bringing this bug to my attention.  We now
properly output the right number of channels, padded every 100.