Veteran Ugandan opposition figure Kizza Besigye has been charged with treason and is in ill health after a hunger strike.