Velocity templates should be called for ascenedant primary types

Fix for: https://www.pivotaltracker.com/s/projects/684825/stories/79207804
Then use [Iterables.find()](http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/Iterables.html#find(java.lang.Iterable, com.google.common.base.Predicate, T)). There is no way that a loop and flag is more readable than a straightforward one-method call, and `break` is almost always a refactor waiting to happen.