Updated external_exec to use proc_open

This changes the function external_exec from a standard shell_exec to using proc_open. Should see some performance gains with this (when using large scale deployment) however the main reason is to get a status response back from the commands so that we can see what things like snmpget are upto.

This is also to enable an update to poller that detects for snmp-config match prefix being on or off so that we can resolve a perfomance issue at work.