CRYSTAL: a computational tool for the ab initio study of the electronic properties of crystals