Added setRowOffsets to LiquidCrystal library

Original commit by Mark Sproul, but cleaned up by Matthijs Kooijman.
Make the LiquidCrystal row offsets uint8_t instead of int

Since these are memory addresses, there is no need to make them signed.
Furthermore, the HD44780 chip supports memory addresses up to 0x67, so
uint8_t shouldbe sufficient.
In LiquidCrystal::setCursor(), check against length of _row_offsets as well

Before, the row value was maximized against _numlines already, but the
value from _numlines is not limited anywhere, so it could be longer than
the length of _row_offsets. This check makes sure the array bounds is
never exceeded.
Support more LiquidCrystal displays out of the box

Previously, the row offsets were hardcoded to the ones used for 20x4
displays (which woudl also work for all 2-line displays). Now, the
number of columns given is used to calculate the offsets most likely to
apply.

For 2-line displays and 20x4 displays, the (used) offsets are completel
unchanged. With this change, common 16x4 displays and (if they even
exist) other 4-line and 3-line displays might also work (depending on
the hardware configuration used, of course).

See this page for some info on common LCD sizes and configurations
encountered in practice:

http://web.alfredstate.edu/weimandn/lcd/lcd_addressing/lcd_addressing_index.html
In LiquidCrystal::begin(), use a define instead of a hardcoded 0
In LiquidCrystal, remove an unused variable
Added close method to PImage
Merge pull request #2360 from sngl/ide-1.5.x-TFT-PImage-close

Added close method to PImage
Fixed missing NOT_AN_INTERRUPT constant in digitalPinToInterrupt()

Fixes #2379
Revert "Match return value to type in available()"

This reverts commit f40e4713542fa862d5b99b256a642e001a796988.
Added an hint for the buffer sizes.

See #2057
Fixes #2367
Updated revision log
Merge branch 'master' into ide-1.5.x

Conflicts:
	hardware/arduino/cores/arduino/HardwareSerial.cpp
	hardware/arduino/cores/robot/Arduino.h
[sam] Added -MMD flag to tell compiler to produce dependencies files

Now a full rebuild of the sketch is triggered only if needed.
build.xml: restored -z flag in tar creation
Ethernet: fixed upcast of byte-pointer
Ehternet: added packed attribute on DHCP message struct
Allow setting a line timeout in MessageSiphon

Previously, the MessageSiphon class would read characters from an
InputStream and then push them to the passed MessageConsumer one line at
a time.

Now, you can specify a line timeout. Normally, messages are still
processed line by line, but if no line ending is received within the
specified timeout (counting from the first character in the line), then
the incomplete line is passed on as a message, without waiting for the
line ending.

This feature is used for the uploader command output. In particular,
this allows the avrdude progress bar to be shown in the IDE as expected,
character by character (previously, the entire progress bar would be
buffered, making it show up completely at the end of the upload).
Reduce avrdude verbosity

Previously, when verbose uploads were enabled, avrdude was run with four
-v options, causing it to dump all raw bytes exchanged with the
bootloader. This floods the console so much that meaningful output
mostly disappears.

Most users probably want to enable verbose mode just to see what avrdude
command is ran. Furthermore, users that benefit from the raw bytes
dumped are perfectly capable of either running avrdude manually, or
modifying platform.txt. Given that, running avrdude with just one  -v
should be plenty.

This fixes #891.
Fixed parsing of dependency files (.d) to improve sketch build speed

Close #2255
Remove core.a before rebuilding it

Before, the ar command was just ran for all .o files that should end up
in core.a, which should replace any old code in core.a. However, it
seems that in the unlikely event that functions or entire source files
are deleted, they might linger in the core.a file.