That's what I did. I simply used the CpsFlowDefinition. Maybe my expectations where wrong, but this is what I was expecting to be able to do.
1. Define new job
2. Check "This build is parameterized"
3. Create string parameter with name "BuildBranch" and default value "master"
4. Under Source code management select "Git"
5. in "Branches to build" enter "* / $ BuildBranch"
6. when the build runs with the default value it checks out the master branch of my git repo and runs the build
7. If a developer runs the build and enters "feature/awesome" for the BuildBranch parameter, the feature/awesome branch is checked out from git and the build runs.
When I use the CpsScmFlowDefinition, I can do all of the above and select Git as the SCM and fill in "* / $ BuildBranch in the "Branches to build" text box, but git always complains that there is no branch named "* / $ BuildBranch". It doesn't seem to be resolving the build parameter.