Don't intern strings to compare them

Interning strings is at least as expensive as comparing them, and brings no
significant advantage to the API.  This replaces the symbol comparison with a
simple string comparison.

Signed-off-by: Daniel Pittman <daniel@rimspace.net>
Avoid member variables in spec tests

Member variables in spec tests are a trap: they preserve state in
unpredictable ways, and can trivially result in state moving between tests
leading to broken tests that appear to work, or vice-versa.

This replaces the member variables with `let` methods, which provide the same
stability, but lazily initialize, and ensure that the object is reset
correctly between tests regardless of other action.

Signed-off-by: Daniel Pittman <daniel@rimspace.net>
Fix unstable "before" moving of policies.

This ensures that policy movement is stable when trying to place one policy
ahead of another in the database.  Previously it would incorrectly swap the
two policies regardless of relative position; now it is correctly idempotent.

Signed-off-by: Daniel Pittman <daniel@rimspace.net>