ofproto: Optimise OpenFlow flow expiry

Optimise OpenFlow flow expiry by placing expirable flows on a list.
This optimises scanning of flows for expiry in two ways:

* Empirically list traversal appears faster than the code it replaces.

  With 1,000,000 flows present an otherwise idle system I observed CPU
  utilisation of ~30% with the existing code but around 4.5% with
  this new code.

* Flows that will never expire are not traversed.

  This addresses a case seen in the field.

Signed-off-by: Simon Horman <horms@verge.net.au>