HAL_Linux: Add FRAM HAL driver support for non-volatile storage

Support for File System starage mode is retained, appropriate Storage mode can be set by defining USE_FS_STORAGE for File System storage aand US_FRAM_STORAGE for FRAM storage.
Note: FS storage and FRAM storage are never synced as of now.
AP_HAL: Add EEPROM instance to HAL to support non-volatile storage HAL drivers
HAL_Empty: add EmptyEEPROM instance to HAL_Empty

Note: only HAL_Linux has EEPROM support, EmptyEEPROM needs to be used for other HALs, this change is pending as of now.
AP_HAL: Remove EEPROM HAL class

the reason of its removal is that it was only utilised by HAL_Linux, it was reasoned that the declaration under this class be a part of already defined Storage class
AP_HAL_Empty: Remove EEPROM instance from HAL_Empty

please check the note under previous commit "AP_HAL: Remove EEPROM HAL class" for details
AP_HAL_Linux: Create two separate Storage lib for File system storage and FRAM storage

User can select the appropriate storage mode by changing value of HAL_STORAGE define under AP_HAL_Boards
AP_HAL: Add option to select Storage type AP_HAL_Boards.h

user can set HAL_STORAGE as USE_FS or USE_FRAM inside AP_HAL_Boards.h as per his/her choice or board setup
Tools:HAL_Linux_Essentials: Add PRU side of code for RCinput to run on PRU0

PRU0 with rcinpru0 firmware will be timing pin state changes and loading it inside ring buffer maintained inside SHARED_RAM at 0x12000 offset
Tools:HAL_Linux_Essentials:add rcinput test code

the test code performs continuous reads from ring buffer shared with PRU0
Tools:HAL_Linux_Essentials: store pin status during pulse instead of status after pulse
HAL_Linux: Add support for PPM input to HAL_Linux

rcin thread continuously scans for values inside ring buffer maintained by pru with rcinpru0 firmware.