Implement swappable storage layer
In bitmask-core we already have a database in order to store inroducer and bridge information. However how it's implemented the database works on Desktop but not on Android. Moreover, the android client already has it's own storage implementation, while Desktop has a rudimentary json file (`systray.json`) to store a couple of settings. A third difference we have between Android and Desktop is that Android's storage is encrypted and secured with a key saved in the device's keychain.
It would be preferrable to allow integrators to swap out the existing BoltDB with whatever they need, by providing a store interface that allows basic key-value operations. A BoltDB store still can remain the default implementation of the store interface that will be used if no custom store is passed to bitmask-core.
The need for this is a result of our discussion on introducers mainly between @peanut2 @jkito and me at bitmask-vpn#897