Fix source-code locations of return statements

In a function with multiple return statements, they are all combined into
a single gcc.GimpleReturn, with a None for its .loc, which led to the
source-location at a return being reported as fun.end, which is confusing,
see:

  https://fedorahosted.org/gcc-python-plugin/ticket/58

Add a "lastgccloc" attribute to absinterp.State, updating this whenever
building a new state with a new stmt that has a non-None location.  States
with stmt.loc == None inherit the lastgccloc of the previous state, thus
propagating sane locations, and avoiding the need to use fun.end (I hope):
the return statements are reported as the location of the assignment to the
retval.

Manual inspection of the existing testcase results shows that the reported
locations are now sane.  Added a testcase to specifically test for this
behavior:

  tests/cpychecker/refcounts/multiple-returns

Fixes https://fedorahosted.org/gcc-python-plugin/ticket/58