Contact list rework

Okay, i've been doing this rework for quite some time and i think it's stable enough to be merged to make it some testing and feedback.

So how it looks:
![no image](http://dump.bitcheese.net/images/aruwygy/blight_newcl.png)

Contacts are sorted based on their status and case of equality alphanumerically. Groups are placed to the end. I used mrlib/aligned-pasteboard as basis for new smart-list component.

When contact list has focus contact entries can be browsed via up/down buttons and selected with space.

Since this is a HUGE pull request please give it some testing, although it workes on my machine (C).
This is a simple solution but it implies that libtoxcore returns consecutive group numbers for new new groups.

If you are sure that this isn't going to change it's ok.

If not we can make more complex but generic solution like this: 
https://github.com/4DA/blight/blob/contact-list-rework/blight.rkt#L1184

Specifically, in callback make lambda wrapping on-grouplist-name-change call and forward it via async channel to add-group function which calls it when we already have the group number returned by toxcore)