Bayesian Federated Learning with Hamiltonian Monte Carlo: Algorithm and Theory