End-of-day commit for issue 4 fix

- Making everything support ssh then telnet
- SSH functionality methods attached to each NetDevice object
- The ability to disable SSH for pty or async by vendor/type in settings.py
- Detecting of remotely closed SSH connections so gong users can be properly
  notified
More progress towards issue-4

- Dynamically attach .execute_ functions to NetDevice objects
- Commando experimentally using NetDevice.execute() method
- execute_ioslike() now determines whether to use SSH or Telnet
- More new helper methods for NetDevice objects
- New TELNET_ENABLED toggle in settings.py
Next round of changes for issue-4

- Remove a bunch of debug comments for good
- Moved _choose_execute() from netdevices to trigger
- New trigger.execute() function to automatically choose the best execute_
  function for a given NetDevice object
- Global NetDevices import removed from twister; moved to only occur when a
  telnet channel is created
- In twister execute_junoscript() now using execute_generic_ssh()
- Command interval added to Junoscript channels for consistency
- Tons more documentation cleanup
Another round for issue-4

- All pty connection logic moved out of bin/gong into trigger.twister and is
  exposed as the connect() function
- The connect function is now automatically attached to every NetDevice object;
  to get a pty it's as simple as dev.connect().
- Interactive sessions may now be optionally logged to a file-like object
- Two new helper functions, setup_tty_for_pty() and
  update_password_and_reconnect(), which modularize functionality that was in
  bin/gong that didn't seem to fit anywhere else have been moved into
  trigger.utils.cli.
A little more cleanup for issue-4
Experimenting with Commando overhaul

- Added a normalized_platform attribute to NetDevice objects for dynamic method
  calls.
- New _lookup for parse_ and generate_ methods; might ditch these all together
Merge branch 'develop' into issue-23

Conflicts:
	conf/trigger_settings.py
	trigger/__init__.py
	trigger/conf/global_settings.py
	trigger/netdevices.py
Commando API overhauled and support added for RANCID (fixes #23)

- RANCID is now officially supported as a source for network device
  metadata. A new RANCID compatibility module has been added at
  trigger.rancid, with support for either single or multiple instance
  configurations. Multiple instances support can be toggled by setting
  settings.RANCID_RECURSE_SUBDIRS to True.

- The following changes have been made to trigger.netdevices:

  - NetDevices can now import from RANCID
  - A new Vendor type has been added to trigger.netdevices to store
    canonical vendor names as determined by the new settings.VENDOR_MAP
    attribute
  - When device objects are created, the manufacturer attribute is mapped
    to a dynamic vendor attribute. This is intended to normalize the way
    that Trigger identifies vendors internally by a single lower-cased
    word, and can be customized in the Trigger configuration using
    settings.VENDOR_MAP.
  - If the deviceType attribute is not set, it is determined
    automatically based on the vendor attribute. The default types for
    each vendor can be customized using settings.DEFAULT_TYPES. If a
    vendor is not specified witihin DEFAULT_TYPES, settings.FALLBACK_TYPE
    will be used.
  - All logical comparisons that onced used the hard-coded value of the
    .manufacturer attribute of a device now instead compares against the
    .vendor attribute
  - You may now tell NetDevices not to fetch acls from AclsDB when
    instantiate you may also do the same for individual NetDevice objects
    that you manually create

- The following changes have been made to trigger.cmds:

  - The Commando class been completely redesigned to reduce boilerplate
    and simplify creation of new command adapters. This is leveraging the
    changes to NetDevice objects, where the vendor name can be expected
    to always be normalized to a single, lower-cased word. Defining
    commands to send to devices is as simple as definiing a "to_{vendor}"
    method, and parsing return results as simple as "from_{vendor}".
  - All dynamic lookups now using the normalized vendor name (e.g. cisco,
    juniper)
  - Base parse/generate lookup can be disabled explicitly in Commando
    subclasses or as an argument to the constructor.
  - trigger.cmds.NetACLInfo adapted to use Commando 2.0

- The following changes have been made to Trigger's exception handling

  - All exceptions moved to trigger.exceptions and given docstrings
  - trigger.acl.exceptions has been removed
  - All calls to exceptions updated to new-style exceptions

- A new -v option was added to bin/netdev to support vendor lookups