CRAB: the CMS distributed analysis tool development and design