annotate reference semantics of c-api

annotate multiarray c-api reference semantics, like stealing and borrowing
the functions are decorated with cpychecker attributes which allow it to perform better static analysis

no guarantee for correctness I might have missed a few functions. The nonull attribute can probably added to most of our functions but I didn't go through them all to add it, only those that happened to steal references too.
also the umath api is not annotated yet

additionally this could be extended to add reference semantic information to our (horribly outdated) c-api docs, with the sphinx reference addon (like python.org docs does)