[BlurInterface] Port to the new generation approach
BlurInterface always used to be my go-to template when starting a new protocol, we may as well make it up-to-date with the generation.
Code is reduced by a third.
I haven't touched the tests to keep things simple.
Having done this there's some protocol changes I want to make - a destructor on the global and some error codes, but this is a task for another day.