Properly handle different request types
This adds a lot of new features, most notably the feature to create custom requests. I don't think that this code is particularly clean, but I want to merge all new features before I implement all suggested Cleanup issues.
Mentions I forgot: Closes #7 (closed)
Edited by Lorenz Sieben