engine: Support Duplicate Mac Addresses

This patch adds support to duplicate Mac addresses.

It changes the cache in MacPoolManager to use
Maps instead of Sets. These Maps hold counters
per Mac address.

When adding an existing Mac, if AllowDuplicateMacAddresses
is enabled, we increment the counter. When freeing a Mac
we either decrement the counter, or remove it from the
Map entirely in case this is the only one.

The patch also adds a new method forceAddMac(), that
is meant for cases when Mac needs to be added to a MacMap,
regardless of it already being use (for example, upon
initialization).

Change-Id: Ie96eda19de2d3a44e24806095fb690e4eba41165
Signed-off-by: Muli Salem <msalem@redhat.com>