Add a query to the update
function used to filter the karas to update. Only the karas that matches the query will be updated.
Also refactor the URI thing, now the implementations is hidden from the rest of the code.
Partially solves #102 (closed)
Before the pointer was freed by the launching thread, thus the called thread would still use the location after being freed by another thread...