Use container managed entity manager

This makes the class design less error prone (not having to close entity
manager yourself), and allows the use of @Transactional annotation to
keep the entity manager open where appropriate (to hydrate objects, for
requests spanning multiple DB calls)