Non-cooperative games for spreading code optimization, power control and receiver design in wireless data networks