Return error codes in register/release subintr.

This checks for duplicate registrations and other thigns that could've
been causing wrong behavior.
Allow sub interrupts to be enabled before register.

Could've caused interrupts, primarily vblanks, not to run because we
implicitly disabled them on register.
Merge pull request #6389 from unknownbrackets/intrman

Correct error codes and dup checks in inter registration