Request mailbox list as outline view items expand

When we connect to the server we initially request a listing of the
first levels of mailboxes. It would be nice if we could get the rest of
it as we expand items in it.

Send list commands to the server as we browse the tree of mailboxes.

Signed-off-by: Marcus Karlsson <mk@acc.umu.se>
Initially request only first level of mailboxes

We send two list commands once we have authenticated to the server. We
actually only need the first level since the rest will be requested once
they are needed. Don't send the second command to the server.

Signed-off-by: Marcus Karlsson <mk@acc.umu.se>
Make server outline view reuse items on reload

We reload the server outline view with all accounts and mailboxes when a
list reply is received. This causes the entire view to be recreated, and
resets items that are expanded. This makes it difficult to browse the
mailbox tree efficiently since it is recreated for every level that is
expanded.

NSOutlineView can reuse items if they implement -isEqual: and -hash. Add
implementation for both types of elements we use. This causes existing
elements to stay in the same state when the view is reloaded.

Signed-off-by: Marcus Karlsson <mk@acc.umu.se>