BUG: Use getfullargspec() on Python 3

`getargspec()` can fail with a ValueError (which is uncaught) on Python 3 if a function has annotations or keyword only arguments. `getfullargspec()` handles these cases. `formatargspec()` optionally takes the extra three arguments, so no further change is needed.