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>
Revert "ofproto: Optimise OpenFlow flow expiry"

This reverts commit b84c1aeb2b771333cc3b674245be5257339e2937.
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 around 20% with the existing code but around 10% 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>

---

v2
* As suggested by Ben Pfaff
  - Move implementation from classifier to ofproto layer