Use reinterpret_cast to cast __FlashStringHelper to const char*
Use PGM_P instead of prog_char

On later versions of avr-libc, prog_char is deprecated. In 0acebeeff48
the one occurence of prog_char was replaced by "char PROGMEM", which is
not entirely correct (PROGMEM is supposed to be an attribute on a
variable, not on a type, even though this is how things work in older
libc versions). However, in 1130fede3a2 a few new occurences of
prog_char are introduced, which break compilation on newer libc versions
again.

This commit changes all these pointer types to use the PGM_P macro from
<avr/pgmspace.h>. This macro is just "const char *" in newer libc
versions and "const prog_char *" in older versions, so it should always
work.

References #795
Merge branch 'cast' of github.com:Lauszus/Arduino into Lauszus-cast

Conflicts:
	hardware/arduino/avr/cores/arduino/Print.cpp
Fixed value of NUM_DIGITAL_PINS for Arduino Due
sam: moved "variant" methods into proper place
sam: Added digitalPinHasPWM(..) method

Fixes #1342
Improved portability of String class (maniacbug)
Ethernet library refactoring

- removed arch folder
- merged socket.c and w5100.c for SAM and AVR, this is preparatory
  to make library vanilla