First pass at NetDevices metadata loader

- Not bolted into NetDevices class yet, so don't even try
- trigger.netdevices is now a package
- trigger.netdevices.loader provides BaseLoade
- default loaders are in trigger.netdevices.loaders (currently only
  filesystem loaders provided by default for JSON, XML, Sqlite,
  Rancid, and *new*: CSV!)
- New setting: NETDEVICES_LOADERS to define a list of custom loader
  classes to try in turn. The first one to return data wins.
- Still not sure how to specify the path to a metadata "source" within
  the settings file. Will perhaps try to default to ``/etc/trigger`` and
  load using filename ''netdevices'' with a variable suffix based on the
  Loader type? Or maybe just whatever is defined within NETDEVICES_FILE
  or NETDEVICES_SOURCE?
Exception and docstring cleanup
New url parsing lib for testing URI-based file paths for metadata
- Fix to make parse_url support file paths or URLs
Remove local imports from trigger/utils/__init__.py
- Update global settings and sample trigger_settings.py to use NETDEVICES_SOURCE, remove NETDEVICES_FORMAT, assign NETDEVICES_FILE to NETDEVICES_SOURCE
- Remove prints from Rancid and CSV loaders
- Don't pre-build loader objects because they are only called once at startup
+ Cleanup in netdevices

  - Remove SUPPORTED_FORMATS
  - Remove deprecated _parse_* functions
  - Remove parser imports
  - Update _munge_source_data with new arg signature
  - Update _populate and NetDevices._actual constructor w/ new args
  - Replace NETDEVICES_FILE with NETDEVICES_SOURCE
Merge pull request #55 from jathanism/issue-55

make it easy to populate NetDevices from arbitrary sources
- Add Allan Feid (crazed) as contributor.