An effective computational algorithm for rate-independent crystal plasticity based on a single crystal yield surface with an application to tube hydroforming