Force noinline few small functions and remove -fno-inline-small-functions

This seems rather pointless and has no effect for 328p and 1284p. I haven't
checked other configs.
Still, this was added to reduce differences with the "official" optiboot.
Remove the optimization programming below NRWW

This reduces the bootloader quite a bit. 328p goes from 504 to 452 and
the 1284p goes from 510 to 458. And because of this we can now
implement reading from EEPROM as it is done in HG commit a10ef5c935a1

This feature was documented as follows:
Addresses below NRWW (Non-Read-While-Write) can be programmed while
continuing to run code from flash, slightly speeding up programming
time.  Beware that Atmel data sheets specify this as a WORD address,
while optiboot will be comparing against a 16-bit byte address.  This
means that on a part with 128kB of memory, the upper part of the lower
64k will get NRWW processing as well, even though it doesn't need it.
That's OK.  In fact, you can disable the overlapping processing for
a part entirely by setting NRWWSTART to zero.  This reduces code
space a bit, at the expense of being slightly slower, overall.
Add support for reading / writing EEPROM

With this update the length can be larger than 256 (words). We used to
ignore the high byte of the length (and the type for that matter).

Before we were always wring SPM_PAGESIZE/2 words, but now we actually
obey the given length.

This update brings it very close to the "official" version 6.0. There
are only small changes, but the commits are much smaller than the one
big 6.0 update.