Change interface and add features

Make methods private, require path in method calls, support path
replacement, add method specific methods, support default headers, and
various other changes.