Python bindings

PulsePins makes use of nanobind to provide Python binding to the underlying C++ interface. All functionality of the API is exposed.