OFStateManager: speed up flow expiration

The old expiration timer iterated over all flows, whether or not they even had
timeouts set. Doing this once per second caused problems with slow CPUs and
large flowtables.

The new approach maintains a list of flows sorted by expiration time. Flows
without timeouts are not included in the list. The expiration timer only needs
to iterate over the portion of the list that might have expired.

The worst-case for flow-add in this datastructure is linear. However, if the
controller only uses a single timeout period then we'll always insert at the
end of the list. We walk the list in reverse when inserting so this is constant
time. If this assumption turns out to be invalid then we can replace the linked
list with something fancier.

The expiration code is moved to a new file.