Change how we handle config locking
Change how we handle config locking

This PR moves the state of config locking out of the driver and into the device
to more closely follow the Juniper model of locking.  Additionally, we're making
a better attempt to ensure close() is called for each object no matter what
(it's not called by the parent unless the object is called in a with block) to
ensure that we're dropping the lock on the device on exit.

napalm-automation/napalm,napalm-automation/napalm-eos,bholmgren/napalm-eos,spotify/napalm,spotify/napalm