Threaded search introduced

-All the search commands will now create a new thread. Every screen can
only do one search at a time, because the threads are started by a
single threaded ExecutorService. It picks up the search request and
handles them one by one.

The counts of items inside a category are also generated in a separate
Runnable (Counter.java). This is because generating the counts takes a
lot more time than actually executing the search command, and we don't
want the user to wait for his results when they're already available.
The counts are send to the screen as soon as they are created by
Counter.java.