Hamiltonian Boundary Value Methods (Energy Preserving Discrete Line Integral Methods)