Introduce AbstractHttpProvider

Fix #359