WIP: Port ranges provider support

Working on https://bugs.launchpad.net/juju-core/+bug/1337817 - enabling port range support in juju-core. This branch modifies the provider interface and its implementations to handle port ranges. They are silently converted into old-style port slices on the firewaller. Port range support in the firewaller is still in progress.
about discarding errors, btw: I think it's OK given the regexps, but I feel like we ought to have some sort of testing for bad cases.

...but, honestly, I don't trust any provider not to magically change things like this. Can we give this func an error return, so we can explicitly reject strings we don't understand instead of silently letting them pass by?