SNMP Community and version 3 support

SNMP version 3 works!

Re-jigged the way SNMP is modelled to make the community a separate
item and use the various host attributes to determine its use.

completely re-wrote the SNMP engine to use the higher-level functions
which make a much cleaner set of code in the engine but is also
mandatory for v3