heavily revised according to global rand_parts function -KL

reduced redundancy by combining functions. Now, the user calls only one function, i.e. rand_parts(Q,N,sample_size,which,zeros). Values of the arguments determine whether zero-valued parts are allowed and whether 'bottom-up' or 'divide_and_conquer' are used.