RecordThrottling.allowed?(scope, actor, options) allows for the logic to
used without the exception being thrown when the limit is reached. Makes
it possible to reuse RecordThrottling for the RateLimit use case
pre-condition.

Fix crash in case there's no group with the same name as gitorious user

Etc.getgrnam throws an exception if group object resolving for the given
group name fails. Therefore we should handle the case when there's no
group with the same name as gitorious user name available and use
the primary gid of the gitorious user instead.

Refactor ProjectCreator mutation so we can build the invalid Project
instance with the provided params in the controller. This way, when we
re-render the `new` form, we prefill the values the user entered.

When creating a new merge request, a separate processor will ensure
the tracking repository exists and create a new version for the merge
request. This causes another push to occur (since doing git push will
trigger those), and the push processor would intercept this push and
create a version.

With this change, the push processor will only process merge request
updates, not deletions (it didn't before this change) and creations.

Without this atleast_one_process_name_matching() may fail to identify a
running process since ps will only output the first 80 characters of
information per line, and the string being searched for may be outside
of them.

This caused one unit test to fail for me:

test: Self-diagnostics should detect if any current ps entry contains
given string. (DiagnosticsTest)