func (bs *Slice) Len() int {
	ln := len(*bs)
	if ln == 0 {
		return 0
	}
	eb := (*bs)[0]
	bln := ln - 1
	if eb != 0 {
		bln--
	}
	tln := bln*8 + int(eb)
	return tln
}
Len returns the length of the slice in bits
package bitslice
import "fmt"
type Slice []byte
func BitIdx(idx int) (byte int, bit uint32) {
	return idx / 8, uint32(idx % 8)
}
func Make(ln, cp int) Slice {
	by, bi := BitIdx(ln)
	bln := by
	if bi != 0 {
		bln++
	}
	var sl Slice
	if cp > 0 {
		sl = make(Slice, bln+1, (cp/8)+2)
	} else {
		sl = make(Slice, bln+1)
	}
	sl[0] = byte(bi)
	return sl
}