func-attr: add some extra handy function attrs

The attributes in question are:

- nonnull: specify whether a function argument cannot/may not be null
- returns_nonnull: specify whether a function will not return a null
  pointer (example: xmalloc can't return null, so it should be annotated as
  such). Only available from gcc 4.9 onwards.

Currently these attributes are only supported by gcc.
alloc: xmalloc and xrealloc can't return null

With this annotation/function attribute, we can inform gcc that these
functions never return null, which can save a lot of redundant null checks.