Add API call for list of tags and reorganize project
This adds a call for the client to get a list of tags with a given filter. In addition, the predicate parsing can handle en empty string and the project was re-organized to use the Rust workspace pattern.