A General Social Agent-Based Model of Opinion Dynamics with Applications to STEM Education and Radicalization