Upgrade to Grails 2.4.4 - Closes #97
Add custom toString() for Component and Product classes to to improve debugging and test output.
Changed formatting; add custom toString()
Use Java 8
Remove hasMany connection, which makes it easier to unit test.
Add OptionalResult

This helps reducing the places where problems are communicated via RuntimeException
and also reduces cases where nullable objects are returned and not properly handled.

The old pattern in Little Goblin is:
1. if(problem){throw new RuntimeException(errorMessage))
2. catch RuntimeException e, render error message from e.getMessage (this breaks with unexpected exceptions lacking a proper messageId...)

The new pattern should be:
1. for each problem: add error to OptionalResult
2. return OptionalResult and handle valid/invalid case from there

The old pattern mixes serious exceptions with common user errors (for example, using a too-short password),
it often uses expensive Exception objects (with complete StackTraces) and can only ever communicate one problem.
You can work around the expensive objects problem by using static exceptions, but it's still ugly.
Use Google Guava Ints/Longs.tryParse() to make code more elegant.
Use new OptionalResult class instead of new RuntimeException to report problems.

(The ProductionController still uses the old problem reporting method via Exception, but is now ready for further refactoring)
Added more tests to ProductionServiceSpec and cleaned up the code.