py/malloc: realloc: Count only positive increments in total_bytes_allocated.
py/malloc: realloc: Count only positive increments in total_bytes_allocated.

Clearly define that "total" counter is a measure of memory traffic, aka
memory "hungriness", so should only monotonically grow. For statistic
which can both increase and decrease, we have "current memory" counter,
don't mix semantics on "total" and "current".

As an example, consider following alloc scenario:

1. Block of 2K was allocated.
2. It was reallocated to 1K.
3. Another block of 3K was allocated.
4. First block was reallocated to 1.5K.
4. The block of 3K was freed.

Then counters will be (assuming they were at 0s at the beginning):

total: 5.5K
current: 1.5K
peak: 4.5K

Each of these counters has specific semantics: current means that at
the end of described scenario, 1.5K was still allocated. Peak of 4.5K
means that maximum amount of simultaneously allocated memory was 4.5K.
And total of 5.5K means that processing required total of 5.5K memory.
(Not necessary simultaneously, again, it's a measure of memory hungriness;
for example, in the case above, we may question why it started with
allocating 2K if next it shrank it to 1K; if it started with allocating
1K, its "total" would be 4.5K, signifying that such version would be
less "memory hungry").

pfalcon/micropython,pfalcon/micropython,pfalcon/micropython,pfalcon/micropython,pfalcon/micropython