ping consumer no longer crashes when device does not have a proper ip address
scheduled dispatcher will reset the timer thread when it is started and stopped and the timerthread delays starting a random number of seconds within the interval.
scheduled dispatcher will reset the timer thread when it is started and stopped and the timerthread delays starting a random number of seconds within the interval.
make dispatcher consume messages in a separate thread
Merge remote-tracking branch 'origin/threaded-dispatcher' into threaded-dispatcher

Conflicts:
	dispatcher/dispatchers.py
cleanup code from merge
restart timer thread when reconfiguring scheduled dispatcher
extract get_next_cmd method and rename check_snmp to get_system
add get_mac_table method
get_interfaces now returns a dictionary
add get_cisco_vlan_membership function and cisco pysnmp mibs
type hinting for BaseDoc
device_path and group_path functions for jobclass
get_all_jobs function for device class
tabs for device show view
add javascript for tabs
add title for device show view
add tab hider div for more natural tabbed look and feel
add get and set method for device details for static user configured data
align tabs on document load