datapaths: Allow passing arbitrary extra args on commandline

These are passed using dictionary format without the outer curly braces,
but still must include proper quotation.  For example:
 --extra=\'max_entries\':100
datapaths: Refer to capabilities by right names

The switch was initializing its Features object using attribute names
which aren't the actual significant attribute names (it was missing the
'cap_' prefix).  We now both fix this and make it harder to do it without
noticing by having the Features object override __setattr__ and complain
when you're doing it.
datapaths: Add port counters

Unfortunately, this is currently sort of expensive.  At the appropriate
places, all we have are packet objects.  We need to pack these so that
we can find the lengths, and then we probably just throw away the packed
result even though it may be used again soon (and somewhere, we may have
already had the packed version).  So the efficiency here could be
improved.

rx_packet() now takes an optional argument for the packed version.  We
don't currently use it, but this would allow us to skip an extra pack.
In the future, we should continue this sort of thing, I guess (carrying
the packed packet too when possible).

Thanks to eternia478 and nbjsw for the bug report.
datapaths: Fix calculation of supported-action bits

Features was mis-computing the value of the supported action bits.  Fixed.
datapaths: Improve check for invalid buffer_id

Previously, we only checked for too-large buffer_ids; we now check for
too-small ones as well.

Thanks to eternia478 and nbjsw for the bug report.