Update port conflict checker to distinguish between conflicts and exact matches.

This is a fix for #1359837 (https://bugs.launchpad.net/juju-core/+bug/1359837).

Opening a port that is already open should not result in an error.
We are talking about port ranges here. A match means the port ranges are exactly identical: same protocol, boundaries and associated unit.

I will refer you to the bug description (https://bugs.launchpad.net/juju-core/+bug/1359837) and the discussion in juju-dev (subject: Port ranges - restricting opening and closing ranges). It is not uncommon for charms to open the same port more than once. Previous ports implementation handled this using mongo's set operations, so opening a port that was already open worked.

Since now ports are tied to machines they are being opened on, it makes sense to allow a unit to open a port even if it was opened before by that same unit. If the port, however, was opened by a different unit on that same machine, we need to return an error.