Better error reporting

Currently we use only the gRPC status codes to indicate errors. The only exception is post limit checking, where we use the custom enum ErrorMessageCode. However, the need to report more granular error types comes up more and more often. The suggested solution is to migrate to using https://cloud.google.com/apis/design/errors

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information