Como esticar um número fixo de itens de navegação horizontal de maneira uniforme e completa em um contêiner especificado

Eu gostaria de estender 6 itens de navegação uniformemente em um contêiner de 900px, com uma quantidade uniforme de espaço em branco no meio. Por exemplo...

---| 900px Container |---

---| HOME    ABOUT    BASIC SERVICES    SPECIALTY SERVICES    OUR STAFF    CONTACT US |---

Atualmente, o melhor método que posso encontrar para fazer isso é o seguinte:

nav ul {
  width: 900px; 
  margin: 0 auto;
}

nav li {
  line-height: 87px;
  float: left;
  text-align: center;
  width: 150px;
}

O problema com isso é duas vezes. Antes de tudo, isso não justifica realmente, mas espalha as tags li de maneira uniforme por toda a tag ul. Criando um espaço em branco desigual entre itens de menu menores como "HOME" ou "SOBRE" e itens maiores como "BASIC SERVICES" .

O segundo problema é que o layout é interrompido se um item de navegação for maior que 150px, o que é o SPECIALTY SERVICES - mesmo que haja espaço mais do que suficiente para toda a navegação.

Alguém pode resolver isso para mim? Venho vasculhando a web em busca de soluções, e todas elas parecem estar vazias. CSS / HTML somente se possível ...

Obrigado!

ATUALIZAÇÃO (29/7/13): Usar célula de tabela é a melhor maneira moderna de implementar esse layout. Veja a resposta de felix abaixo. otable cell propriedadefunciona em 94% dos navegadores atualmente. Você terá que fazer algo sobre o IE7 e abaixo, mas, caso contrário, deve estar ok.

ATUALIZAÇÃO (30/7/13): Infelizmente, há um bug no webkit que afeta isso se você estiver combinando esse layout com as Consultas de mídia. Por enquanto, você terá que evitar alterar a propriedade 'display'.Consulte Bug do Webkit.

ATUALIZAÇÃO (25/7/14): Existe uma solução melhor para isso abaixo agora envolvendo alinhamento de texto: justificar. Usar isso é mais simples e você evitará o bug do Webkit.

questionAnswers(12)

yourAnswerToTheQuestion