INCL++: the Liège Intranuclear Cascade Model