Initial commit for tickets module

Tickets are automatically generated when creating a publication. The publications module can still work independently from the tickets module. Instead of using dispatched events or public functions to generate a ticket, we register a `createPublicationListener` on initialisation of the `oae-tickets` module. This listener gets executed when a publication was successfully created (see `_createPublication` in the `oae-publications` api).
Follow-up on review
Follow-up on review

## Counter
Every tenant has its own tickets counter now (OA-1, OA-2...) instead of increasing the counter value for the shared instance.

## Decorators
Added a separate method to decorate the publications when they are requested by their id, an author of by creator.

## REST API
Removed the REST endpoints for requesting tickets since tickets only need to be 'requested' while fetching publications. The publications are decorated with their corresponding ticket.

## Permissions
Since not every user is allowed to see the corresponding tickets of publications, a check was added to see if the current user has a role. Only global admins, tenant admins in which the publication/ticket was created in, creators and authors of a publication can see a ticket.

## Tests
Some dedicated tests were added that:
    - check if valid parameters are passed when requesting:
        - a single ticket
        - a range of tickets
    - check the permissions for attaching tickets when:
        - a publication is requested by its ID
        - a set of publications are requested by an author
        - a set of publications are requested by a creator
	- check the locking functionality while creating tickets
    - check that the created tickets correspond to their corresponding publications

## General
- Fixed `publication` into `publications[0]` where necessary
- Added or fixed the JSDocs where necessary
Follow-up on review

- Added and fixed JSDocs where necessary
- Parameters are passed in separately in createTicket() in TicketsDAO
- getTicket was removed when a ticket was created, just return the object
- Added a `isCorrespondingTicket` and `isValidTicket` method in the unit-tests
Follow-up on review

- `isValidTicket` now only checks if the parameters are wellformed while `isCorrespondingTicket` checks if the specified ticket matches a ticket that has been added to a publication object.
- Removed the assertion of created users
- Added some documentation where necessary
Merge pull request #9 from Coenego/avocet-tickets-module

Initial commit for tickets module