Are there brute force engines which examine all possible moves to each depth? Are there chess engines that carry out brute force search, looking at all possible moves to each depth?  An engine like this could be used to generate for solutions to tactical puzzles where the key move gets pruned by engines with selective search.
The answer is yes and no. 

http://www.gamedev.net/page/resources/_/technical/artificial-intelligence/chess-programming-part-iv-basic-search-r1171 
Has a pretty good explanation on how chess engine works. 

In Chess, for example, a typical branching factor in the middle game would be about 35 moves. That is, after every move, there will be around 35 possible valid moves. 

Using a "smart brute force algorithm"  (aka Min-Max search), the time complexity of the algorithm is O( B^n ). That is, you need around that B^n operations n-ply search.

An 8-ply search of a chess position would need to explore about 1.5 million possible paths! That is a LOT of work. Adding a ninth ply would make the tree balloon to about 50 million nodes, and a tenth, to an impossible 1.8 billion! A typical game has 30-40 moves, so you will need to search for 30^35 - 40^35 positions. 

Assuming your CPU is running at 3GHz, and it takes only one clock cycle to analyze one position, it will take more than 1x10^42 years to complete the search.  So short answer is no.  

However, endgames with small number of pieces have been thoroughly analyzed, and can be determined if mate is possible.  By August 2012, tablebases had solved chess for every position with up to seven pieces (According to wiki http://en.wikipedia.org/wiki/Endgame_tablebase)