refs #8371. Possible injection of component names.

The component names may be specified externally. That way we have no hard-coded values. The algorithm will guess at component names to use, but will fail if they don't exist and the user can provide these names via the algorithm inputs.
refs #8371. Calculate theta if not given.

This replicates the current functionality of quick. Tests show this working. Results have been compared to existing quick script.