Building Extensible Program Logics through Effect Handlers