Respect struct fields with 'IDs' suffix when (un-)marshaling

When marshaling, `Foobars` takes precedence over `FoobarsIDs` when the
former is empty. When unmarshaling, only `FoobarsID` will be filled.

fixes #8
initial implementation of REST's index route
implemented REST GET method
REST api now is a class, uses interface DataSource instead of lambdas
log errors in REST