Heat oil in a Dutch oven over medium heat. Add onion and cook, stirring, until beginning to soften, 2 to 3 minutes. Reduce heat to medium-low and cook, stirring often, until very soft and just beginning to brown, 3 to 4 minutes. Add garlic, chili powder, cumin and chipotle (or cayenne) to taste and cook, stirring constantly, until fragrant, 30 seconds to 1 minute. Stir in canned and fresh tomatoes, kidney, white and black beans, water and pepper. Increase heat to high and bring to a boil, stirring often. Reduce heat to a simmer and cook, stirring occasionally, until the chili has reduced slightly, 10 to 15 minutes.