Bug 1053940 - docker-worker: Encrypted environment variables

One open issue is the management of the gpg keys. Currently they are hard-coded.
I'm sorry I thought you knew how travis encrypted env vars worked...
The code here should be:

```
// Find variables that are encryopted (secret)
var encryptedVars = {};
_.forIn(taskPayload.env || {}, function(value, key) {
  if (value instanceof Object && typeof(value.secret) === 'string') {
    encryptedVars[key] = value.secret;
  }
});

// For each encrypted variable, create a promise and wait for all
// promises to complete
return Promise.all(_.map(encryptedVars, function(secretMessage, key) {
  // Promise for decrypted message
  return openpgp.decryptMessage(
    privateKey, 
    openpgp.armor.encode(
      enums.armor.message,
      new Buffer(secretMessage, 'base64').toString()
    )
  ).then(function(text) {
    // Validate the message
    var message = JSON.parse(text);
    validateEncryptedData(message, taskId);
    // Overwrite the secret on env, so everything can contine as usual
    taskPayload.env[key] = message.secretData;
  });
}));
```

**Remark**

Please do not do this `openpgp.key.readArmored(this.privateKeyArmored).keys[0]` for every environment variable you decrypt... Do it in the constructor... And then hopefully you wont reinitialize `PrivateVariable` for every single task... 


Also while I'm at it... I never suggested a JSON encoding be used for environment variables... ie. for the data under the PGP encryption... In fact I believe I suggested:
```
version:1\n
taskId:<taskId>\n
created:<timestamp>\n
deadline:<deadline>\n
\n
<secret data>
```

It's slightly more compact. (Random note, we should probably rename from `created` and `deadline` to `start` and `end`, as this is more accurate; they no longer have any thing to do with task created or deadline).

I'm okay with using JSON, but do add the `version: 1` property to that dictionary and validate that it is present and that it is `1`. If not throw an error as we can't handle version 2 yet :)

And do consider renaming `created` to `start` and `deadline` to `end` as they nolonger have a relation to `task.created` and `task.deadline`.