[#456] Implements /devicenotification endpoint

* Introduces a new kind `DeviceFileJobQueue` that holds the pending
  images per device
* If a `deviceId` on `DeviceFileJobQueue` is `null`, it means that
  applies to *all* devices
[#456] Initialize reponse members to avoid null values

* Reuse response object to reply consistent data
* Initialize Response members to avoid `null` values in the response
[#456] Remove trailing white spaces

* No code change
[#456] Adds support for checking an image when ingesting a file

* When saving the `QuestionAnswerStore` entities, we check for `IMAGE`
  type entities, and add a task to a queue for each entry
* Adss a *stubb* ImageCheckServlet that performs the check
[#456] - Implement image check task

* Implements a way of checking up to 3 times the existence of an image
  in the remote location defined by `photo_url_root` system property
* Make public the connection timeout to be reused `TaskServlet`
* Move the parameter names to constants
[#456] - Adds info logging when rescheduling a check
[#456] Build a response proper response for the device notification

* The current JSON library we're using can't handle the serialization
  properly
* When the resp contains data it generates somethin like:
  {"missingUnknown":[],
   "missingFiles":[{"bytes":[{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}],
   "empty":false}]}
[#456] Modify the delay between attempts

* We now test after 5 or 10 min (2nd and 3rd attempt)
* We log when gave up and save the file as "missing"
[#456] Implement hook in /processor endpoint

* When a `image` action is submitted by a device, we try to match any
 `DeviceFileJobQueue` entity for that fileName, filtering by device or
  null
* `null` on `deviceId` means that we don't know the source of the image
* Next time a device ask for its notification, `missingFiles` and
  `missingUnknown`, shouldn't contain this image in the list
Merge branch 'develop' into feature/456
Merge branch 'feature/456' into develop