Seniority-based coupled cluster theory