Support zone types other than ipv4 and ipv6

There is a breaking API change in this.  The 'proto' parameter to
shorewall::zone has been replaced by 'type'.  While I'm in here, wrapping array
values in Array(..) to allow for a simple singleton case.