[libqofono] Add SimManager Error and PinType enums

Use PinType enum instead of string identifiers for pin types, and use
Error enum for more specific error reporting in pin*Complete signals.

Also make pin operations async.
[libqofono] Add SimManager::modemPathChanged() and don't change modem path unnecessarily
[libqofono] Add some SimManager utility functions
[libqofono] Store own retry count if necessary and use PinType values in pinRequired & lockedPins

- Store a per-SIM retry count in case the SIM does not provide this
- Fix pinRequired & lockedPins properties to report values using
  PinType enum instead of string identifiers.