Refactor Seaside models to improve perceived performance.

Prioritize querying the minimal amount of information required to
display a list of favorites on initialization so something can be
presented with the smallest of delays.  Once that's done basic data
for the rest of the contacts can be queried so complete or filtered
lists can be presented.  Finally the full contact data required for
individual display and editing is pulled in on demand.

I'm now seeing similar performance querying 1000 contacts as I was previously with 100, and favorites are available a good 1.5 to 2 seconds before that.

To get locale correct sorting you'll need to set LC_COLLATE in the environment to your locale, otherwise sorting will be done with the "C" locale.