Sturm comparison and separation theorems for linear, second order, self-adjoint, ordinary, differential equations and for first order systems