[HAL][NRF51822] enable I/O mapping and peripheral dynamic assignment for I2C and SPI

+ to enable any digital I/O of nRF51822 to be used as I2C's SDA/SCL or SPI's MISO/MOSI/SCK.
+ to avoid conflict between I2C and SPI by dynamically assigning peripheral

    The nRF51822's I2C_0 and SPI_0 (I2C_1, SPI_1 and SPIS1) share the same address. They can't be used at the same time. So we use I2C_0 and SPI_1 as default. See nRF51822 address information at nRF51822_PS v2.0.pdf - Table 15 Peripheral instance reference.

See discussion at #573 
If we use one SPI for two devices, we'd better use one SPI instance. For example, using a SD card and a SPI accelerometer uses
```
SPI spi(mosi, miso, sck);     // only use one SPI instance
SDCard sd(spi);
Accelerometer acc(spi);
```
instead of
```
// Create two SPI instance
SDCard sd(mosi, miso, sck);
Accelerometer(mosi, miso, sck);
``` 

Anyway, I will change the code as lot of libraries use the second way.