chore(cache): introduce project lease
Related to #960 (closed)
Context
This MR introduces project leases (without using them). Project lease are a redis-cached abstraction used to signify that a project's repositories can not be written to due to an existing hold on the project space (e.g via a rename operation).
Project leases are intended to be used to block writes/deletes to existing repositories that orignate from the path the project lease was granted for. Project lease will aid in preventing data corruption when a rename operation is ongoing.
This is MR 2/3 of #960 (closed) and it is expected that MR 3/3 will utilize the functionality of granting said project lease when a the rename API is invoked successfully by using the changes introduced in !1299 (merged) (i.e MR 1/3) and this MR.