Get rid of most of allocations in ScalacBackendInterface

By reusing same decorator instances.
Fix several bugs introduced by capturing a sub pattern instead of performing a test.
Make reading of source easier by giving a bit more structure.

Also gather in one place Product1s