libbuxton: Fix backend initialization

When getting a backend for a layer, we were opening a new backend for
each layer instead of using the same backend an opening a new db for
each layer. This caused problems when alternating use between two dbs
as the module init would be called each time a new db was accessed
making the previous db inaccessible. Fix this by adding a backend
hashmap that gets the backend to use based on the backend name.