pub fn tokenize(text: &str) -> Vec<String>
Simple whitespace + lowercase tokenizer
For MVP, this is sufficient. Can be replaced with more sophisticated tokenizers (stemming, stopwords, etc.) later.