RAFFLE general purpose Monte Carlo code