Improve CC composite error message to support i18n

At present, in CC, there are some of the error messages are composite message
which consist of two parts: general message part and error detail reason part.
For example, Application Invalid message has three kinds of details:

1. Errors::ApiError.new_from_details("AppInvalid", "Number of instances less than 1")
2. Errors::ApiError.new_from_details("AppInvalid", "Invalid app state provided")
3. Errors::ApiError.new_from_details("AppInvalid", e.errors.full_messages)

For this kind of composite message, both the general message part and the detail
reason part need to be translated. Considering the details part is hard coded
in CC code, suggest to enhance the CC code like the following format to support
full i18n:

Errors::ApiError.new_from_details("AppInvalid.invalid_instance_number")

and in the i18n translation file, we can put the full message of AppInvalid error message like:

AppInvalid:
  instances_less_than_1: "The app is invalid: Number of instances less than 1"
  invalid_app_state: "The app is invalid: Invalid app state provided"
  default: "The app is invalid: %s"

In this PR, I just use AppInvlid message as en example, if this solution is
ok for CC, we can use the same solution for other composite error messages
in CC code. Will submit following PRs after this one is accepted and merged.
Merge remote-tracking branch 'origin/pr/292'
Use new i18n error messages.

[#78541378]
Merge remote-tracking branch 'origin/master'
More refactors for EventRepository

- rename methods to use the works 'record' instance of 'create'. We may
need to make special methods for create and delete events; using the
word 'record' will make these new methods less confusing.

- calls to record methods pass a symbol specifying only the action,
  instead of the whole type string
Return proper error codes for deleting service_instances

- 404 when instnace not found
- 403 when user not authorized to delete

This fixes a regression introduced in
3a0590b61f832787dc0eeb19c9407dfcde2a8cc7
Store request_addrs as controller instance variable for service_instance update

This fixes a regression introduced in a recent story
Add audit event when deleting service plan visibilities

[#62604848]

- Replaced event validation of 'presence' with 'not_null' for
actee_name. In cases like service plan visibilities we don't have an
actee name and want that field to be blank.

Conflicts:
	app/repositories/services/event_repository.rb
V3 Apps have a name

- can be issued during create
- can be updated
- can be obtained through GET

[#79387438]
Refactor app controller logic

  - Created app handler to contain app domain logic
  - Removed app repository in favor of using sequel model directly
  - Factored domain logic from controller into app handler
  - Removed anemic appv3 domain model

[#79387438]
Add validations for the name field.

[#79387438]