Refactored some namings to make them clearer.

* Renamed the ForSubject(func) method to WithSubject
* Renamed the ForSubject() virtual method BuildSubject