New core module: Delegations

A full description has yet to be written but the concept is as follows:

Frequently tasks imply operational dependencies that are not practical to
express in the project's timeline. For instance, assume that a task
requires that tests be made on modified samples of a device. The task
description will only say this but in reality it may involve the following
sequential steps:

1. Request the samples from an overseas factory, through their technical
   department
2. The technical department requests the unmodified samples from the
   warehouse
3. The samples are delivered to the technical department for modification
4. After modifications are done the samples are sent to Q&A
5. After Q&A approval the samples are sent to shipping to be sent to
   company headquarters
6. The samples are received at headquarters and are delivered to the
   task assignee.

Including all these steps in the project's timeline is not practical but
for the task assignee (and also the project manager) to know the task
progress accurately this information is crucial. So for these cases
delegations can be used; the task assignee will delegate the task to the
overseas technical department that will then start a chain of delegations
within the factory (technical->warehouse->technical->shipping) and then
to headquarters. Each of these delegations has a done/not done status,
creating task logs that may impact the task's completion status (if there
are no conflicting task assignee's task logs).
Each delegation can be rejected by its recipient, creating a problem task
log until the project manager disposes of the rejection, either by
accepting or refusing it.
After the delegation is done it should be re-delegated to the next user
responsible, by either the user that finished the work (which can be a low-
level user, permissions-wise) or by the project manager.