functionalise snmp packet generation

combine all methods of snmp packet generation
(no auth, auth only and authpriv) into a function.

Code still broken since 011dba7 with no return packet and
wireshark/tcpdump not recognising the packet as SNMP data
Using OpenSSL library to encode ASN1 data

Re-write to use OpenSSLs library to encode our ASN1 data, which fixed
our bug with incorrect packet length when DES is selected