Implement NetworkTask cancelling

Don't continue loading data if the user selects an other list. This
prevents unnecessary loading of useless data and fixes #190.

Exception are FORCESYNC-tasks, there is no reason to interrupt them.
Instead let them finish but don't display results (thats why there is
the new "cancelled" parameter in the callback function).

Cancellation code is a little more complex as it could be because of our
low minimum API level. It can be simplified as soon as we drop < API 11.