address and port: reduce memory allocs
rule parsing: reduce mallocs and clean up

Reduce mallocs during rule parsing. Also, no longer recursively
call the option parse function.
rule parsing cleanups

Clean up usage of array of pointers to the various parts of a rule.