'Removes a spec from the database.  To be called on uninstall.
Reads the database, then:
1. Marks the spec as not installed.
2. Removes the spec if it has no more dependents.
3. If removed, recursively updates dependencies\' ref counts
and removes them if they are no longer needed.'

@_autospec
def remove(self, spec):

    with self.write_transaction():
        return self._remove(spec)
