Refactor bulk edit

This tries to make bulk edit better by:
Simplifying controller logic by moving conditional logic for each field into a delegated object. This has the added benefit of ensuring a 1 to 1 ratio of setter to field (there was the chance of copy-pasting duplicates before)
Use a field enum for names to prevent typos when used in multiple places (in some places, string literals are still used though).
Add lookups into an enum (so we're using a lookup table rather than a big if-else statement).
its slightly faster to use the {} syntax for logging ie ("items to bulk edit {}", Arrays.toString(request.getItems())) as that way the expression is only evaluated when the logger is used.