Added option to configure custom request content processing logic

This patch adds option to configure custom request content processing logic which gets called before request content is sent to tracker.
Yes, it's a bit redundant, deliberately, to be consistent with existing code, e.g. setRequestMethod. When you think of it, it's like a safe setter, if setter is called without providing value. To be DRY and keep setters safe, we could make in both cases default value to be a separate non mutable field.