minimatch skeleton
minimatch: initial implementation

Not optimized yet.
minimatch: optimize minimatch_equal
minimatch: optimize minimatch_more_specific
minimatch: optimize minimatch_expand
minimatch: optimize minimatch_init
minimatch: optimize minimatch_overlap
minimatch: optimize minimatch_hash
OFStateManager: store minimatch instead of of_match_t

With 200000 flows this reduces total heap usage reported by massif from 183 MB
to 98 MB.

This change expands the minimatch everywhere the match is used. This regresses
performance. Future changes will do performance-critical operations directly on
minimatches.
OFStateManager: use minimatch in queries

This is for speed, not space. The minimatch is much smaller than of_match_t, so
it's faster to compare.
OFStateManager: use minimatch_hash
OFStateManager: parse match and minimatch only once when adding a flow

The match is parsed and minimatch created in flow_mod_setup_query. It was also
done again in ft_entry_create. Both of these operations are expensive, so it'd
be better to do it only once.

This change moves out the minimatch after the struct match query is done, and
moves it in to the ft_entry.
minimatch: optimize minimatch_more_specific using the bitmap

This turns the operation into linear time in the number of nonzero mask words,
instead of linear time in the total number of match words.
OFConnectionManager: send controller connections async message on role change

This was previously only being sent on a connection status change.
Merge into master from pull request #147:
OFConnectionManager: send controller connections async message on role change (https://github.com/floodlight/indigo/pull/147)
Merge into master from pull request #142:
compress of_match_t to save space (https://github.com/floodlight/indigo/pull/142)
OFConnectionManager: convert write queue list to a ringbuffer

This gets rid of the linear list append and the extra allocation/free.
OFConnectionManager: write as many messages as possible to the socket

The previous limit of 32 messages per tick was creating a bottleneck. I think
that in producer-consumer scenarios like this we should give the consumer
priority and not limit how much it can consume. Otherwise the work done by the
producer will be wasted when the message is dropped.
OFConnectionManager: improve comments

Also fixed an incorrect function prototype.