Use associative array for captive portal database

Trying to debug why RADIUS stop packets are not getting sent from my pfSense install, I discovered problems with the various functions using the captive portal database.

When support for multiple RADIUS server sets was added, the code started using the tenth entry to store the context ('first' or 'second') but nobody bothered updating the database schema. So a few weeks ago, when support for Acct-Interim-Interval was added, schema was updated, interim_interval was added as the tenth entry, and things start to break whenever a RADIUS server returns an Acct-Interim-Interval during authentication.

So the underlying problem here, I think, is people have to try and remember what number means what field, and things become unclear. Using named array indices should be more intuitive, less fragile, and more easily extensible.