[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 
Does it have a prototype? Is it invoked from anywhere? This has an impact on all platforms, doesn't it?