Add project user to check for write permissions in the Rest.li deploy call

Add project user to check for write permissions in the Rest.li deploy call. Typically, a headless admin account will be used in the deploy call. This user can write to all projects. But we want to capture the fact that user "Joe" was the one that actually requested the deployment. We should check that deployments requested by Joe can only write to Joe's projects.

Note that I form the User object directly from the user name rather than getting it from the UserManager. In this case, we do not have Joe's password. The UserManager's getUser method requires the password, and providing an alternate method seems to break unwritten invariants about UserManager's method. In particular, providing a getUser method that does not take a password will require a lot of rework to LinkedIn's custom UserManager class.

This means I just check that the User has write permissions directly on the project. If the user is a part of a Group or has a Role that can write to the project, this will not be considered.

For LinkedIn's case, this will work. Generally this will probably work as well, since physical humans requesting deployments will likely be users on projects to which they can write to (rather than being part of some Group or having some Role that can write to a lot of projects). This is not ideal, but I'm not sure how else to handle this.
No, there is an existing check to see if the user from session can write to the project. In this case (at LinkedIn), it means that the CRT user must be logged in successfully to write to a project. Nobody can easily spoof logging in as the CRT user.

However, if the deployment configured is mixed up and Joe requests a deployment, the CRT user might overwrite Bob's project with Joe's zip file. This patch adds a secondary check to verify that both CRT and Joe can write to Bob's projects (but Joe can't write to Bob's project, so it correctly fails).