Rio de Janeiro to host 2016 Olympics