[Persist] Add persist_username & persist_password to Config::Server.

Currently there is no mechanism to pass authentication credentials to a
local or remote persistence service (such as MongoDB or PostgreSQL).
While a non-authenticated connection works out of the box with a local
MongoDB server, this is not the case with a local PostgreSQL server.

Furthermore there is no way to configure Razor to use a remote MongoDB
server protected by a username/password authentication.

As a result the PersistPlugin#connect method signature was augmented to
take `username` and `password` parameters. Each persistence
implementation is responsible for using or ignoring these additional
parameters when establishing a database connection.
[Postgres] Bugfix: uuid variable not defined in #object_doc_get_by_uuid.
[Postgres] Ensure Ruby symbols are (de)serialized.

In the MongoPlugin Ruby symbols are preserved in hash values thanks to
BSON, but in other persistence plugins symbols will be coerced to
strings (via a JSON.generate in the Postgres case) before saving. When
the object is deserialized the values that were Ruby symbols are now
strings which is not expected by the rest of the codebase.

Instead, we can "encode" the hash data structures containing symbols by
transforming any symbols to strings, for example: :symbol -> ":symbol".
When the data is read back out of the database we can "decode" these
data structures and reconstitute the symbols.
[Postgres] Allow ID of type VARCHAR only for policy_table.

A single row is inserted into this table with a "uuid" set to
"policy_table" which is not a valid UUID.
[Postgres] Insert active_model object if '@version' attr is < 0.

The object document that is persisted to the :active collection is a
PolicyTemplate and as such will have a version attribute greater than 1.
Merge PostgreSQL plugin fixes from blueboxgroup

This fixes some of the more obvious and painful bugs in the PostgreSQL storage
plugin added a little while back.  It doesn't address core issues like
application level model corruption from concurrent activity on the database,
but it makes it more practical to use PSQL during testing of the current
preview releases.

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