Added error handling / cleanup

Previously, if the script exited with an error or was interrupted, the original MAC address was not restored. Added a trap on SIGINT/TERM and refactored the cleanup code into a function to deal with this. Also now echo out the original MAC address when the script starts working.